【发布时间】:2016-01-17 23:20:09
【问题描述】:
我想为数据帧的每一行计算一个字符串中定义的模式(这里:'Y')。理想情况下,我希望在 V3 中出现多次,在 V4 中获得长度。
输入:
V1 V2
A XXYYYYY
B XXYYXX
C XYXXYX
D XYYXYX
输出:
V1 V2 V3 V4
A XXYYYYY 1 5
B XXYYXX 1 2
C XYXXYX 2 1,1
D XYYXYX 2 2,1
我尝试了以下函数的不同修改,但没有成功。
dict <- setNames(nm=c("Y"))
seqs <- df$V2
sapply(dict, str_count, string=seqs)
提前致谢!
【问题讨论】:
-
我相信
str_函数都应该被矢量化。无需sapply他们。此外,gregexpr("Y", df$V2)本质上应该在基础 R 中给出这个。 -
谢谢,但您的解决方案给出了“Y”的位置,而不是出现次数和/或长度
-
@thelatemail 如果您将模式更改为
"Y+",匹配长度将被正确捕获。 -
@steveb - 是的,我忘记了
+。 -
@user2904120 输出“D”的最后一行缺少“Y”(参见输入)。
标签: r count stringr find-occurrences