我有一个数据框,我需要找到行号,其中一列中的条目值与某个模式匹配。
让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实现这一点,但事实并非如此。我尝试过不同的匹配函数组合,但它也不会产生任何结果。
也许我从一开始就接近这个问题的方式是错误的,但是我很难相信没有任何功能,只要有一些调整就会给我提供预期的结果。
感谢。
答案 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