Ответ 1
Вы можете использовать match
и отрицательную индексацию.
v[-match(x, v)]
производит
[1] "d09" "d01" "d02" "d13"
match
возвращает только местоположение первого совпадения значения, которое мы используем в наших интересах здесь.
Обратите внимание, что %in%
и is.element
являются вырожденными версиями match
. Для сравнения:
match(x, v) # [1] 6 2 3
match(x, v) > 0 # [1] TRUE TRUE TRUE
x %in% v # [1] TRUE TRUE TRUE
is.element(x, v) # [1] TRUE TRUE TRUE
Последние три являются одинаковыми и в основном связаны с логической версией первого (фактически, см. код для %in%
и is.element
). При этом вы теряете ключевую информацию, которая представляет собой местоположение первого совпадения x
в v
и остается только зная, что значения x
существуют в v
.
Обратное, v %in% x
означает что-то отличное от того, что вы хотите, что "значения в v
находятся в x
", что не будет соответствовать вашему требованию, поскольку все повторяющиеся значения удовлетворяют этому условию.