我想把矩阵中的所有列的逻辑矩阵和and
一起创建一个向量。一个例子:
a = c(TRUE, TRUE, FALSE, TRUE, FALSE, FALSE)
A = matrix(a, nrow = 3, ncol = TRUE, byrow = TRUE)
我想生产
[1] TRUE FALSE FALSE
目前我正在这样做
apply(A, 1, function(x) Reduce('&', x))
然而,随着输入的大小,这变得非常慢,我想知道是否有更有效的方法来做到这一点。
使用起来会更快:
apply(A,1,all)
而不是打电话给Reduce
。
此外,rowSums
函数相当于apply(x,1,sum)
但更快,所以它可能会更快:
rowSums(A)==ncol(A)
而不是在Reduce
中使用apply
,一种选择是将'A'转换为data.frame
然后再做
Reduce(`&`, as.data.frame(A))
#[1] TRUE FALSE FALSE
或split
然后col
Reduce(`&`, split(A, col(A)))
#[1] TRUE FALSE FALSE