在R中如何获得一个向所有列应用AND的向量?

问题描述:

我想申请并通过矩阵的所有列,但没有找到一个类似的问题:在R中如何获得一个向所有列应用AND的向量?

> array(c(TRUE,FALSE,TRUE,TRUE,FALSE,FALSE),dim=c(2,3)) 
     [,1] [,2] [,3] 
[1,] TRUE TRUE FALSE 
[2,] FALSE TRUE FALSE 

我试图获得

 [,1] [,2] [,3] 
[1,] FALSE TRUE FALSE 

这样做的和过栏,怎么办我在R里这么做?

使用all()

apply(x, 2, all) 
[1] FALSE TRUE FALSE 

你没有要求,但any()all()补:

apply(x, 2, any) 
[1] TRUE TRUE FALSE 

我知道的最快方法:

colSums(x) == nrow(x) 

而如果你的代码,高尔夫,还有就是比较模糊

!colSums(!x) 

另外,如果您的数据只有两行,你可以做的量化

x[1,] & x[2,] 

所有这些都应该是这样比使用环路(for*apply


最后,为了得到结果到水平矩阵更快,包裹到一切t(...)matrix(..., nrow = 1)

+0

非常好的高尔夫代码示例! – BlueTrin