R语言学习之字符串处理实例(3)之字符串匹配浅探
·
通过实例来学习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)
更多推荐


所有评论(0)