我想使用以下标准从大矩阵中删除行:
应删除第二列中包含100的任何行。
如何做到这一点?我知道如何选择那些行,但我不知道如何使用规则删除它们。
答案 0 :(得分:4)
R > mat = matrix(c(1,2,3,100,200,300), 3,2)
R > mat
[,1] [,2]
[1,] 1 100
[2,] 2 200
[3,] 3 300
R > (index = mat[,2] == 100)
[1] TRUE FALSE FALSE
R > mat[index, ]
[1] 1 100
R > mat[!index, ]
[,1] [,2]
[1,] 2 200
[2,] 3 300
以前我对索引与另一种方法which
感到困惑,这是which
的解决方案:
R > (index2 = which(mat[,2] == 100))
[1] 1
R > mat[-index2, ]
[,1] [,2]
[1,] 2 200
[2,] 3 300
注意这些索引的不同用途(!
和-
)。