Сравнивая векторы символов в R, чтобы найти уникальные и / или пропущенные значения - PullRequest
16 голосов
/ 06 февраля 2012

У меня есть два символьных вектора, x и y.

x <- c("a", "b", "c", "d", "e", "f", "g")
y <- c("a",      "c", "d", "e",      "g")

Значения внутри x никогда не повторяются (то есть все они уникальны). То же самое касается вектора у. Мой вопрос, как я могу получить R, чтобы сравнить два вектора, а затем сказать мне, какие элементы отсутствуют в y по x? В противном случае я хочу, чтобы R сказал мне, что "b" и "f" отсутствуют в y.

(Обратите внимание, что в моих реальных данных x и y содержат по несколько тысяч наблюдений, поэтому я хотел бы сделать это программно. Вероятно, есть очень простой ответ, но я не был уверен, что искать в файлах справки R).

Спасибо всем, кто может помочь!

Ответы [ 3 ]

35 голосов
/ 06 февраля 2012
setdiff(x,y)

сделает работу за вас.

9 голосов
/ 06 февраля 2012
> x[!x %in% y]
[1] "b" "f"

или

> x[-match(y,x)]
[1] "b" "f"
> 
6 голосов
/ 06 февраля 2012

Я думаю, что это должно работать:

x[!(x %in% y)]

Сначала он проверяет все x, не входящие в y, а затем использует его в качестве индекса оригинала.

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