通过实例来学习R对字符串的处理。
用到的数据集是R自带的USArrests
查看该数据集的前几行

> head(USArrests)
           Murder Assault UrbanPop Rape
Alabama      13.2     236       58 21.2
Alaska       10.0     263       48 44.5
Arizona       8.1     294       80 31.0
Arkansas      8.8     190       50 19.5
California    9.0     276       91 40.6
Colorado      7.9     204       78 38.7

获取州的名字的集合

> states = rownames(USArrests);head(states) 
[1] "Alabama"    "Alaska"     "Arizona"    "Arkansas"  
[5] "California" "Colorado"  

字符串匹配:含有某些字母的州名
用到的函数主要是:grep(pattern, x, ignore.case = FALSE, perl = FALSE, value = FALSE, fixed = FALSE, useBytes = FALSE, invert = FALSE)

> grep(pattern = "w",x = states) #匹配数据集中含有小写字母w的元素,返回值是该元素在数据集中的位置信息。
[1]  8 11 15 29 30 31 32

> grep(pattern = "w",x = states,value = TRUE) #增加value参数,返回值变为元素本身。
[1] "Delaware"      "Hawaii"        "Iowa"         
[4] "New Hampshire" "New Jersey"    "New Mexico"   
[7] "New York"     


> grep(pattern = "w",x = states,value = TRUE,invert = TRUE) #增加invert参数。返回值是不含有小写字母w的元素,即实现了反选。
 [1] "Alabama"        "Alaska"         "Arizona"       
 [4] "Arkansas"       "California"     "Colorado"      
 [7] "Connecticut"    "Florida"        "Georgia"       
[10] "Idaho"          "Illinois"       "Indiana"       
[13] "Kansas"         "Kentucky"       "Louisiana"     
[16] "Maine"          "Maryland"       "Massachusetts" 
[19] "Michigan"       "Minnesota"      "Mississippi"   
[22] "Missouri"       "Montana"        "Nebraska"      
[25] "Nevada"         "North Carolina" "North Dakota"  
[28] "Ohio"           "Oklahoma"       "Oregon"        
[31] "Pennsylvania"   "Rhode Island"   "South Carolina"
[34] "South Dakota"   "Tennessee"      "Texas"         
[37] "Utah"           "Vermont"        "Virginia"      
[40] "Washington"     "West Virginia"  "Wisconsin"     
[43] "Wyoming"       
#匹配含有"W"或"w"的州名
grep(pattern = "[wW]",x = states,value = TRUE) #利用正则表达式实现
grep(pattern = "w",x = tolower(states),value = TRUE) #将数据集中所有的元素变为小写字母
grep(pattern = "W",x = toupper(states),value = TRUE) #将数据集中所有的元素变为大写字母
grep(pattern = "w",x = states,ignore.case = TRUE,
     value = TRUE) #增加参数 ignore.case,使匹配时忽略元素的大小写。


参考文献:正则表达式及R字符串处理之终结版(Posted by yphuang on March 15, 2016)

更多推荐