繁体   English   中英

通过块选择R矩阵值

[英]Selecting R matrix values by blocks

我有一个形式的矩阵:

[,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

但找不到简单的方法。 有没有人遇到过这样的问题? 我真的很感激!!! 谢谢!!!

我将使用rleinverse.rle如下:

r <- rle(mat[, 2])
r$values[r$values != 1 | r$lengths < 3] <- 0
keep <- as.logical(inverse.rle(r))
mat[keep, ]

您可以使用rle 假设您的矩阵是M ,感兴趣的列是2 ,那么您可以使用以下方法创建一个过滤器:

filter <- with(rle(M[,2]), rep(lengths>=3 & values==1, lengths))

然后使用过滤矩阵

M[filter,]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM