如何删除R中矩阵中的某些特定行

时间:2016-10-10 12:33:52

标签: r matrix rows

我有一个矩阵,我想只保留那些至少有一个成员超过5的行。我的意思是那些成员都少于5的行应该被过滤掉。

例如:

2 4 6 2 1
1 2 3 1 2
5 4 7 2 1

在此矩阵中,第二行应该被过滤掉,因为它的所有成员都小于5。

这是我写的:

for(i in 1:length(matrix[,1]){
for(j in 2:17){
if(any(matrix[i,j]>=5)){matrix=matrix} else {matrix=matrix[-i,]}
}}

但它没有用。

你认为我能做什么?

1 个答案:

答案 0 :(得分:0)

调整this ...

中的一些建议

1)确定应消除哪些行:

a<- read.table(text = "2 4 6 2 1
                       1 2 3 1 2
                       5 4 7 2 1")

a
     V1 V2 V3 V4 V5
[1,]  2  4  6  2  1
[2,]  1  2  3  1  2
[3,]  5  4  7  2  1

bye <- sapply(1:3, function(x){all(a[x,]<5)})
bye
[1] FALSE  TRUE FALSE

2)使用它来对矩阵进行子集化:

a2 <- a[!bye,]
a2
     V1 V2 V3 V4 V5
[1,]  2  4  6  2  1
[2,]  5  4  7  2  1