我想将逻辑矩阵和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))
然而,随着输入的大小,这变得非常慢,我想知道是否有更有效的方法来做到这一点。
答案 0 :(得分:1)
使用起来会更快:
apply(A,1,all)
而非拨打Reduce
。
此外,rowSums
函数相当于apply(x,1,sum)
,但更快,因此可能更快:
rowSums(A)==ncol(A)
答案 1 :(得分:1)
不是在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