字符串计数在 R 中给出错误答案的所有字符串

string count all strings giving incorrect answer in R

      A<-  c('C-C-C','C-C', 'C-C-C-C')

      library(stringr)
      B<- str_count(A, "C-C")
      df<- data.frame(A,B)

     A        B (expected)   B(actual) 
   C-C-C      2              1
   C-C        1              1
   C-C-C-C    3              2

我正在尝试计算所有转换,但是,我得到了错误的答案。有人可以建议如何解决这个问题吗?

您希望字符串可以重叠,但事实并非如此。为此,您需要进行 Lookahead.

str_count(A, "C(?=-C)")
#[1] 2 1 3

或数 -:

str_count(A, "-")
#[1] 2 1 3

或在基础:

lengths(gregexpr("C(?=-C)", A, perl=TRUE))
#[1] 2 1 3

str_count 换行 stringi::stri_count。虽然它不允许您指定可选参数,但您可以直接调用 stri_count

stringi::stri_count(str = A, pattern = "C-C", fixed = stringi::stri_opts_fixed(overlap = TRUE))

base R

中将 gsubnchar 结合使用
nchar(gsub("[^-]+", "", A))
#[1] 2 1 3