将向量与 R 中的多个连续行匹配

Match a vector to multiple consecutive rows in R

我有一个数据框,我需要找到行号,其中一列中的条目值与特定模式匹配。

设 col1 col1 = matrix(c(1,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,1), nrow = 21, ncol = 1) 为按列的示例,向量 r r = c(2, 0 ,2) 为我需要与之匹配的向量。

我需要 R 到 return 行的索引号,其中 r 中的模式与 col1 中的值匹配(在本例中为第 11、12、13 行)。

我以为我可以用row.match实现这个,但事实并非如此。我尝试了不同的匹配函数组合,但它也没有产生任何结果。

也许我处理这个问题的方式从一开始就是错误的,但我很难相信没有任何功能可以通过一些调整为我提供预期的结果。

谢谢。

您可以使用 zoo 中的 rollapply 来完成此操作。基本上,这会滚动运行 identical,window 为 length(r)。这告诉您该序列从 col1 向量的位置 11 开始存在..

library(zoo)
which(rollapply(col1,length(r),identical,r))
[1] 11

要获得位置向量,您可以这样做:

which(rollapply(col1,length(r),identical,r))+0:(length(r)-1)
[1] 11 12 13