2015-05-09 69 views
2

您好删除行我中的R A<-array(c(1:12), dim=c(6,2))从阵列

阵列对于第3行欲保持的行,其在第一列中的值小于3,并在最后3行我想保留其第一列中的值小于4的那些行。

任何人都可以帮助我吗?

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

+1

也许'A [c(head [A [,1],3)<3,tail(A [,1],3)<4),]' – akrun

+0

THANK YOUUUUUUUUUUU – Namch96

+1

请接受Frank的解答,因为它更通用 – akrun

回答

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

您的方法更一般 – akrun

2

尝试

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

上面方法没有考虑到与用于nrow> 6 nrow> 6.可能的选项的数据集(虽然不是优雅的@弗兰克的)

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