R - Как найти общие логические значения в двух векторах - PullRequest
0 голосов
/ 10 апреля 2019

1) Мне нужно пересечь два вектора и вернуть вектор с одинаковыми и с пересеченными значениями.

intersect () не возвращает вектор с таким же размером.

2) Кроме того, почему это возвращает c(TRUE TRUE TRUE), а не c(FALSE TRUE TRUE)?

set1 = c(TRUE,FALSE,TRUE)
set2 = c(FALSE,FALSE,TRUE)

testset = set1 %in% set2

> print(testset)
[1] TRUE TRUE TRUE

Я получил в результате TRUE TRUE TRUE и мне нужно FALSE FALSE TRUE.

Ответы [ 2 ]

4 голосов
/ 10 апреля 2019

A %in% B проверяет каждый элемент в A, находится ли этот элемент в B. Результаты всегда имеют ту же длину, что и length(A). Попробуйте, например,

1:3 %in% 1:9
1:9 %in% 1:3

Я думаю, что вы хотите это:

set1 == set2
[1] FALSE  TRUE  TRUE
3 голосов
/ 10 апреля 2019

Чтобы сделать пересечение, вам нужно использовать оператор & следующим образом:

testset = set1 & set2

Это даст вам следующий результат: FALSE FALSE TRUE

Надеюсь, это поможет.

...