嗨我在R A<-array(c(1:12), dim=c(6,2))
对于前3行,我想保留第一列中的值小于3的行,而对于最后3行,我希望保留第一列中的值小于4的行。
任何人都可以帮助我吗?
到目前为止,我已尝试A[A[,1]<3,]
。这确实照顾了第一个标准,但我不知道如何处理第二个。
答案 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),]