R语言学习之字符串处理实例(4)之特定字符计数
·
通过实例来学习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"
统计某些字母出现的次数
使用的R包是stringr,函数是str_count(string, pattern = "")
具体代码如下:
> library(stringr)
> #字母a的个数
> str_count(states,"a")
[1] 3 2 1 2 2 1 0 2 1 1 2 1 0 2 1 2 0 2 1 2 2 1 1 0 0 2 2 2 1 0 0 0 2
[34] 2 0 2 0 2 1 2 2 0 1 1 0 1 1 1 0 0
函数返回值是对于某个字母在数据集的每个元素中出现的次数,在这里是小写字母a。
看起来使用很简单哎👀
来个有点儿难度的统计元音字母在数据集中的每个元素中的出现次数
> vowels <- c("a","e","i","o","u");vowels #新建一个含有5个元音字母的字符串
[1] "a" "e" "i" "o" "u"
> num_vowels <- vector(mode = "integer",length = 5);num_vowels #设置一个空向量来储存计数结果
[1] 0 0 0 0 0
> for(i in seq_along(vowels)){
+ num_aux <- str_count(tolower(states),vowels[i])
+ num_vowels[i] <- sum(num_aux)
+ } #利用循环来计数,并储存计数结果到空向量num_vowels
> names(num_vowels) <- vowels;num_vowels #对向量num_vowels命名
a e i o u
61 28 44 36 8
首先搞清楚函数seq_along()的作用是什么。
seq_along(along.with) 参数:along.with take the length from the length of this argument.
观察实例:
> seq_along(vowels)
[1] 1 2 3 4 5
> seq_along(10:20)
[1] 1 2 3 4 5 6 7 8 9 10 11
由说明文档和实例,我们可以得知,此函数的主要作用就是生成一个从1开始,步长为1,长度和函数输入值的长度相同的向量。
看一下,循环是怎么起作用的
> for(i in seq_along(vowels)){
+ num_aux <- str_count(tolower(states),vowels[i])
+ print(num_aux)
+ num_vowels[i] <- sum(num_aux)
+ print(num_vowels)
+ }
[1] 4 3 2 3 2 1 0 2 1 1 2 1 0 2 1 2 0 2 1 2 2 1 1 0 0
[26] 2 2 2 1 0 0 0 2 2 0 2 0 2 1 2 2 0 1 1 0 1 1 1 0 0
[1] 61 0 0 0 0
[1] 0 0 0 0 0 0 1 2 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0
[26] 0 1 1 2 3 2 1 0 0 0 0 1 1 1 0 0 4 1 0 1 0 0 1 0 0
[1] 61 28 0 0 0
[1] 0 0 1 0 2 0 1 0 1 1 2 1 3 2 1 0 0 2 1 0 0 2 1 4 2
[26] 0 0 0 1 0 1 0 1 0 1 0 0 1 1 1 0 0 0 0 0 3 1 3 2 1
[1] 61 28 44 0 0
[1] 0 0 1 0 1 3 1 0 1 1 0 1 1 0 1 0 0 1 0 0 0 0 1 0 1
[26] 1 0 0 0 0 1 1 2 2 2 2 2 0 1 2 2 0 0 0 1 0 1 0 1 1
[1] 61 28 44 36 0
[1] 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1
[26] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0
[1] 61 28 44 36 8
显而易见,每一次循环计算特定元音字母在数据集的每个元素中出现的次数,并将其出现次数加和,写入空向量num_vowels中。
参考文献:正则表达式及R字符串处理之终结版(Posted by yphuang on March 15, 2016)
更多推荐


所有评论(0)