如何计算元素x的特定序列在较长的向量y中存在的次数。
x <- c(1,2,3,4,5,6)
y <- c(1,2,3,4,5,6,3,2,0,1,2,3,4,5,6,1,2,3,4,5,6,9,2,1,2,3,4,5,6,1,2,3,4)
很抱歉,但无法通过任何方式实现,因为使用匹配将匹配单个元素,但不匹配字符串或元素序列。
答案 0 :(得分:2)
为了添加当前答案和戴维斯的评论,
length(gregexpr(paste(x,collapse = ""), paste(y, collapse=""))[[1L]])
在一般情况下失败。这是因为如果没有匹配,则结果索引为-1,长度为1,而不是正确的答案0。
x = c(1,2,3)
y = c(4,3,2,4,3,4,3,2,2,3)
length(gregexpr(paste(x,collapse = ""), paste(y, collapse=""))[[1L]])
# [1] 1
而stringi::stri_count_fixed
返回预期的0。
一个不依赖于粘贴到字符串的不同答案你应该喜欢它,但我怀疑它是慢的:
library(zoo)
sum(rollapply(y, width = length(x), function(v) all(x == v)))
答案 1 :(得分:1)
cy <- paste(y, collapse = "")
cx <- paste(x, collapse = "")
(nchar(cy) - nchar(gsub(cx, "", cy))) / nchar(cx)
[1] 4
当预期结果为0时,@ jamieRowen提到的情况也很稳健。