R计数字符列

时间:2011-06-17 11:38:10

标签: r

我想在同一行的不同列中添加一个包含字母数量a-z的列。

dataset$count <-length((gregexpr('[a-z]', as.character(dataset$text))[[1]]))

不起作用。

我想要实现的结果:

text  |  count
a     |  1
ao    |  2
ao2   |  2
as2e  |  3
as2eA |  3

2 个答案:

答案 0 :(得分:15)

棘手的一个:

nchar(gsub("[^a-z]","",x))

答案 1 :(得分:2)

这应该可以解决问题:

numchars<-function(txt){
  #basically your code, but to be applied to 1 item
  tmpres<-gregexpr('[a-z]', as.character(txt))[[1]]
  ifelse(tmpres[1]==-1, 0, length(tmpres))
}
#now apply it to all items:
dataset$count <-sapply(dataset$text, numchars)

另一种选择更多的是两步法:

charmatches<-gregexpr('[a-z]', as.character(dataset$text))[[1]]
dataset$count<-sapply(charmatches, length)