如何计算文本中的单词数(字符串)?

时间:2014-05-22 08:41:43

标签: regex r apply sapply

我有这个字符串向量(例如):

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

如何解决这个问题?

3 个答案:

答案 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