通过实例来学习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"
字符统计:获得名字最长的州名
state_chars <- nchar(states);head(state_chars) #获取每个州名的字母数量
[1] 7 6 7 8 10 8
> states[which(state_chars == max(state_chars))] #名字最长的州
[1] "North Carolina" "South Carolina"
解决问题的逻辑思路是:
1. 已知的条件:一个包含州名的数据集。通过查看该数据集,可以看出州名是该数据集的列名。
2. 思路:a. 获取州名 b. 统计每个州名的字母数量 c. 找出字母数量最多的州。
3. 具体函数的用法:
nchar(x)
。参数x
为一个字符串向量,向量中有多个元素,类型也是字符串,该函数会统计输入向量x
中的每个元素的长度,并在原元素的位置上返回该元素的长度值,即阿拉伯数字。
max(x)
函数的作用是识别一串数字中的最大值,并返回该最大数字的值。
which()
函数的主要作用是筛选输入向量中符合条件的元素,返回值是该元素在向量中的位置。
参考文献:正则表达式及R字符串处理之终结版(Posted by yphuang on March 15, 2016)