我有这个字符串向量(例如):
str <- c("this is a string current trey",
"feather rtttt",
"tusla",
"laq")
要计算此向量中的单词数,我使用了这个(在此处给出Count the number of words in a string in R?,这可能是重复但有另一个问题)
No_words <- sapply(gregexpr("\\W+", str), length) + 1
但它返回
6 2 2 2
String在最后两个位置只有1个元素(即"tusla"
和"laq"
)
所以它应该返回
6 2 1 1
如何解决这个问题?
答案 0 :(得分:13)
你可以尝试
sapply(gregexpr("\\S+", x), length)
## [1] 6 2 1 1
或者根据评论中的建议,您可以尝试
sapply(strsplit(x, "\\s+"), length)
## [1] 6 2 1 1
答案 1 :(得分:8)
使用stringi
包和stri_count
:
require(stringi)
str <- c(
"this is a string current trey",
"nospaces",
"multiple spaces",
" leadingspaces",
"trailingspaces ",
" leading and trailing ",
"just one space each")
> stri_count(str,regex="\\S+")
[1] 6 1 2 1 1 3 4
答案 2 :(得分:1)
使用qdap软件包中的wc功能。
str <- c("this is a string current trey",
"feather rtttt",
"tusla",
"laq")
library("qdap")
wc(str)
返回:
wc(str) [1] 6 2 1 1