我有一个表格矩阵:
[,1] [,2]
1 0
100 0
200 1
300 1
400 1
500 0
600 0
700 1
800 1
900 1
我正在尝试制作一个R脚本,在第2列上选择至少3个连续的“1”值,例如,检索
200 1
300 1
400 1
700 1
800 1
900 1
但找不到一个简单的方法。有没有人遇到像这样的问题?我真的很感激!!!感谢!!!
答案 0 :(得分:4)
我会使用rle
和inverse.rle
,如下所示:
r <- rle(mat[, 2])
r$values[r$values != 1 | r$lengths < 3] <- 0
keep <- as.logical(inverse.rle(r))
mat[keep, ]
答案 1 :(得分:3)
您可以使用rle
。假设您的矩阵为M
且感兴趣的列为2
,那么您可以使用以下内容创建过滤器:
filter <- with(rle(M[,2]), rep(lengths>=3 & values==1, lengths))
然后使用
过滤矩阵M[filter,]