【问题标题】:R count the number of words starts with given letter in a phraseR计算短语中以给定字母开头的单词数
【发布时间】:2019-01-21 01:18:03
【问题描述】:

我想获取给定字符串中以给定字母开头的单词的计数次数。

例如,在那个短语中:“那种模式很棒,但猪喜欢牛奶” 如果我想找到以“g”开头的单词数,只有 1 个“great”,但现在我得到 2 个“great”和“pigs”。

这是我使用的代码:

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

【问题讨论】:

    标签: r string


    【解决方案1】:

    我们需要一个空格或单词边界来避免第一个字母匹配到单词开头以外的字符。另外,最好使用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
    

    【讨论】:

    • 我相信"^g|\\bg" 模式会更好,因为g 是字符串的第一个字符。
    • @RuiBarradas 它会同时接收gregexpr("\\bg", "good evening good bye")#[[1]] [1] 1 14`
    • 好吧,不知怎的,我搞砸了我的测试。抱歉打扰了。
    • @RuiBarradas 提出这一点很好,以防有人从讨论中受益。谢谢
    • 它将如何调用一个函数并给出我想要查找的字母?
    【解决方案2】:

    你也可以用 stringr 库来做

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

    【讨论】:

      猜你喜欢
      • 2020-10-31
      • 2018-09-03
      • 2023-02-21
      • 2014-01-02
      • 1970-01-01
      • 2013-08-21
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      相关资源
      最近更新 更多