R计算在短语

时间:2018-02-07 11:54:12

标签: r string

我想获得计数时间,在给定的字符串中,一个单词以给定的字母开头。

例如,在那句话中:“那种模式很棒,但猪喜欢牛奶” 如果我想找到以“g”开头的单词数量,那么只有1个“很棒”,但是现在我得到2个“伟大”和“猪”。

这是我使用的代码:

x <- "that pattern is great but pogintless"
sapply(regmatches(x, gregexpr("g", x)), length)

2 个答案:

答案 0 :(得分:5)

我们需要一个空格或单词边界来避免字母与单词的开头以外的字符匹配。此外,使用ignore.case = TRUE可能更好,因为某些单词可能以大写

开头
lengths(regmatches(x, gregexpr("\\bg", x, ignore.case = TRUE)))

以上内容可以包装为函数

fLength <- function(str1, pat){
       lengths(regmatches(str1, gregexpr(paste0("\\b", pat), str1, ignore.case = TRUE)))
 }

fLength(x, "g")
#[1] 1

答案 1 :(得分:0)

您也可以使用stringr库

library(stringr)
str_count(str_split(x," "),"\\bg")