R 将元素序列与具有类似序列的较长向量相匹配
如何计算元素x的特定序列在较长向量y中存在的次数R 将元素序列与具有类似序列的较长向量相匹配,r,R,如何计算元素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) x为了增加当前答案和Davids评论 length(gregexpr(paste(x,collapse = ""), paste(y, collapse=""))[[1L]]) 在一般情况下失败。这是因为如果没有匹配项,结果索引为-1,长
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)
x为了增加当前答案和Davids评论
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\u count\u fixed
返回预期的0
另一个答案不依赖于粘贴到字符串。如果您愿意,我怀疑它速度较慢:
library(zoo)
sum(rollapply(y, width = length(x), function(v) all(x == v)))
cy您希望匹配的是序列还是特定的数字?不清楚你想要的输出是什么?我想你正在寻找类似于stringi::stri\u count\u fixed(粘贴(y,collapse=”),粘贴(x,collapse=”)
Wrap withlength()
的东西,你已经找到了。最后一个可以写为:sum(rollappy(y,length(x),idential,x))
Bah,错过了,看得很清楚
cy <- paste(y, collapse = "")
cx <- paste(x, collapse = "")
(nchar(cy) - nchar(gsub(cx, "", cy))) / nchar(cx)
[1] 4