String 查找每行中的字数
假设我想找出数据帧中每行的字数。 在下面的例子中,我想找到第一列中的第一个值 有3个字,第二个值有4个字,依此类推。我想这是一项任务 对于其中一个apply函数,但我很难找到答案String 查找每行中的字数,string,r,apply,String,R,Apply,假设我想找出数据帧中每行的字数。 在下面的例子中,我想找到第一列中的第一个值 有3个字,第二个值有4个字,依此类推。我想这是一项任务 对于其中一个apply函数,但我很难找到答案 dat = data.frame(one=c("That is Cool", "I like my bank", "He likes pizza", "What")) 我需要使用strsplit()还是在创建时使用apply()函数更好 函数:apply(dat,1,函数(x)…下面的代码应该执行此操作,假设所有
dat = data.frame(one=c("That is Cool",
"I like my bank", "He likes pizza", "What"))
我需要使用strsplit()
还是在创建时使用apply()
函数更好
函数:
apply(dat,1,函数(x)…
下面的代码应该执行此操作,假设所有单词都用空格分隔
sapply(strsplit(as.character(dat$one), " "), length)
# [1] 3 4 3 1
另一种基于正则表达式的方法。其思想是删除除空格以外的所有内容,并计算修改后字符串的长度(即空格数,所以+1得到单词数): 此外,您还可以添加保护以处理开头或结尾带有空格的字符串:
nchar(gsub("[^ ]|^ *| *$", "", dat$one)) + 1
# [1] 3 4 3 1
示例:
x <- c(" One two ", "One Two ", " One two")
nchar(gsub("[^ ]", "", x)) + 1
# [1] 4 3 3
sapply(strsplit(x, " "), length)
# [1] 3 2 3
nchar(gsub("[^ ]|^ *| *$", "", x)) + 1
# [1] 2 2 2
x
x <- c(" One two ", "One Two ", " One two")
nchar(gsub("[^ ]", "", x)) + 1
# [1] 4 3 3
sapply(strsplit(x, " "), length)
# [1] 3 2 3
nchar(gsub("[^ ]|^ *| *$", "", x)) + 1
# [1] 2 2 2
x <- " One Two "
nchar(gsub("[^ ]|^ *| *$", "", gsub(" +", " ", x))) + 1
# [1] 2