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
.
A %in% B
проверяет каждый элемент в A
, если этот элемент находится в B
. Результат всегда имеет ту же длину, что и length(A)
. Попробуйте, например.
1:3 %in% 1:9
1:9 %in% 1:3
Я думаю, что вы хотите это:
set1 == set2
[1] FALSE TRUE TRUE
Я не понимаю, чего ты хочешь: почему Ж, Ж, Т?
Извините, я только что понял, что мне нужно FALSE FALSE TRUE. Как "и" (&&) между двумя векторами.
Чтобы сделать пересечение, вам нужно использовать оператор &
следующим образом:
testset = set1 & set2
Это даст вам следующий результат: FALSE FALSE TRUE
Надеюсь, поможет.
%in%
проверяет «построчно», отсюда и результатTRUE TRUE TRUE
.