从数组中删除行

时间:2015-05-09 16:58:31

标签: arrays r

嗨我在R A<-array(c(1:12), dim=c(6,2))

中有一个数组

对于前3行,我想保留第一列中的值小于3的行,而对于最后3行,我希望保留第一列中的值小于4的行。

任何人都可以帮助我吗?

到目前为止,我已尝试A[A[,1]<3,]。这确实照顾了第一个标准,但我不知道如何处理第二个。

2 个答案:

答案 0 :(得分:2)

使用&|构建您要保留的子集:

Arow = 1:nrow(A)
A[ (A[,1] <  3 & Arow <= 3) | 
   (A[,1] <  4 & Arow >  3) ,]

当然,你不必在多行上写它。这是一个稍短的版本:

A[A[,1] < 3 + (Arow > 3),]

在算术中,逻辑向量Arow > 3在假时被视为0,在真时被视为1。

答案 1 :(得分:2)

尝试

A[c(head(A[,1],3) <3, tail(A[,1],3) <4),]

对于具有nrow&gt;的数据集,上述方法没有考虑到。 6. nrow&gt; 6的可能选项(虽然不像@Frank那样优雅)

 A1 <- A[c(1:3,(nrow(A)-2):nrow(A)),]
 A1[A1[,1] < rep(c(3,4), each=3),]