在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)
。
非常好的高尔夫代码示例! – BlueTrin