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

时间:2017-12-20 00:32:36

标签: r

我想将逻辑矩阵和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))

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

2 个答案:

答案 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

splitcol然后

Reduce(`&`, split(A, col(A)))
#[1]  TRUE FALSE FALSE