计算数据框多列中字符串的出现次数

The*_*ust 1 r

我有以下数据框,我想为每一行计算单词“High”的出现次数,并将“countHigh”作为另一列附加到数据框

     a    b    c
1 High High High
2 High  Low High
3  Low  Low High
Run Code Online (Sandbox Code Playgroud)

所以我应该得到一个计数向量(3,2,1)。

我试过 apply() 和 stringr:str_count 如下:

> apply(test.df[,1:3],1,str_count,"High" )

    [,1] [,2] [,3]
[1,]    1    1    0
[2,]    1    0    0
[3,]    1    1    1
Run Code Online (Sandbox Code Playgroud)

我两次使用了 apply() 函数:

> apply(apply(test.df[,1:3],1,str_count,"High" ),2,sum)
[1] 3 2 1
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点,特别是只使用一次 apply() 并使用 grep() 或 which() ?

谢谢

akr*_*run 5

如果它是一个固定字符串,则创建一个逻辑矩阵==并获取rowSumsfrom base R(与 相比应该快apply

test.df$countHigh <- rowSums(test.df == "High")
Run Code Online (Sandbox Code Playgroud)