并且将逻辑矩阵的列组合在一起以获得一个向量

问题描述 投票:0回答:2

我想把矩阵中的所有列的逻辑矩阵和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))

然而,随着输入的大小,这变得非常慢,我想知道是否有更有效的方法来做到这一点。

r
2个回答
1
投票

使用起来会更快:

apply(A,1,all) 

而不是打电话给Reduce

此外,rowSums函数相当于apply(x,1,sum)但更快,所以它可能会更快:

rowSums(A)==ncol(A)

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
© www.soinside.com 2019 - 2024. All rights reserved.