Как я могу объединить логические векторы? - PullRequest
0 голосов
/ 02 июля 2018

Доброе утро,

Я кодирую в 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

И я хотел бы получить вектор, сообщающий мне, если позиция установлена ​​в истинное значение хотя бы в одном из трех векторов:

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

Я пытался использовать:

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

Но это не сработало.

Спасибо, если у вас есть идея или совет, чтобы решить мою проблему,

Ответы [ 3 ]

0 голосов
/ 02 июля 2018

Может быть, это можно сделать также:

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
0 голосов
/ 02 июля 2018

, поскольку ваши данные в матричном формате, вы можете сделать:

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
0 голосов
/ 02 июля 2018

Мы можем использовать | в этом случае

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...