我正在尝试对矩阵的所有列应用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
通过对列进行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
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)
。