如何合并逻辑向量?

时间:2018-07-02 16:41:52

标签: r concatenation

早上好

我正在用R编码。 我有三个逻辑向量:

  1 2 3 4 5 6
a T T F F T F
b F T F F F F
c F F F T F F

我想获得一个向量,告诉我三个向量中的至少一个是否将位置设置为true:

  1 2 3 4 5 6
a T T F T T F

我尝试使用过:

Reduce("&&",a,b,c)

但这没用。

如果您有解决我问题的想法或建议,谢谢

3 个答案:

答案 0 :(得分:3)

在这种情况下,我们可以使用|

a|b|c

如果有多个向量,请将其放置在list中,并将Reduce|一起使用

Reduce(`|`, list(a, b, c))

数据

a <- c(TRUE, TRUE, FALSE, FALSE, TRUE, FALSE)
b <- c(FALSE, TRUE, FALSE, FALSE, FALSE, FALSE)
c <- c(FALSE, FALSE, FALSE, TRUE, FALSE, FALSE)

答案 1 :(得分:2)

由于您的数据采用矩阵格式,因此您可以执行以下操作:

colSums(dat)>0
    1     2     3     4     5     6 
 TRUE  TRUE FALSE  TRUE  TRUE FALSE 

数据:

dat=read.table(text="  1 2 3 4 5 6
a T T F F T F
b F T F F F F
c F F F T F F",strip=T,h=T)
names(dat)=1:6

答案 2 :(得分:1)

也许这也可以做到:

Reduce(`+`,list(a,b,c)) > 0

或更简单地可以是:

a+b+c > 0

输入可以是:

a <- c(TRUE, TRUE, FALSE, FALSE, TRUE, FALSE)
b <- c(FALSE, TRUE, FALSE, FALSE, FALSE, FALSE)
c <- c(FALSE, FALSE, FALSE, TRUE, FALSE, FALSE)

输出

> Reduce(`+`,list(a,b,c)) > 0
[1]  TRUE  TRUE FALSE  TRUE  TRUE FALSE