Как не потерять скопированные элементы в setdiff в R?

Я использую setdiff функция для извлечения элементов первого набора, которых нет в другом наборе. Но после оценки setdiff Я получаю такие элементы, но они являются отдельными значениями (не так много, как было в первом наборе); как это:

> setdiff( c("x", "x", "y"), c("y"))
[1] "x"

Есть ли более умный способ извлечь такие элементы, но в количестве, которое было в первом наборе, например, в результате этой строки?

> c("x","x","y")[ c("x","x","y") %in% setdiff( c("x", "x", "y"), c("y"))]
[1] "x" "x"

1 ответ

Инвертировать совпадение для %in% сделать выражение проще и оставить setdiff позади:

> x <- c("x","x","y")
> x
[1] "x" "x" "y"
> x[!x %in% c("y")]
[1] "x" "x"
Другие вопросы по тегам