删除满足R中条件的矩阵部分

时间:2013-01-23 19:03:04

标签: r

我想使用以下标准从大矩阵中删除行:

应删除第二列中包含100的任何行。

如何做到这一点?我知道如何选择那些行,但我不知道如何使用规则删除它们。

1 个答案:

答案 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

注意这些索引的不同用途(!-)。