R: найти и установить в ноль каждый элемент в векторе, который не появляется в другом векторе - PullRequest
2 голосов
/ 28 мая 2020

У меня есть два числа c вектора:

a <- c(1,2,3,4,5,6,7,8)
b <- c(4,2,2,3,9,10,7,7,10,14)

Я хочу установить любое число в b, которое не отображается в a, равным нулю. Мой желаемый результат:

c <- c(4,2,2,3,0,0,7,7,0,0)

кто я могу сделать это элегантным способом?

(я думал использовать left_join, но я думаю, что должен быть более элегантный подход)

Ответы [ 4 ]

2 голосов
/ 28 мая 2020

Используйте отрицание условия %in%:

b[!b %in% a] <- 0
2 голосов
/ 28 мая 2020

Вы можете сделать это, разделив b с помощью функции %in%:

b[! b %in% a] <- 0
1 голос
/ 28 мая 2020

Мы можем использовать replace

replace(b, !b  %in% a, 0)
1 голос
/ 28 мая 2020

ifelse (b% in% a, b, 0), похоже, делает это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...