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

时间:2017-11-19 22:55:09

标签: r match row col

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

让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来返回一个索引行数,其中r中的模式与col1中的值匹配(在本例中为第11,12,13行)。

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

也许我从一开始就接近这个问题的方式是错误的,但是我很难相信没有任何功能,只要有一些调整就会给我提供预期的结果。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用rollapply中的zoo执行此操作。基本上,它会以identical的窗口滚动运行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