文字ベクトルがあり、2番目のベクトルに存在する要素を除外したいと思います。ベクトル全体を考慮しながら、この場合の否定を処理する方法がわかりません
vector[vector ! %in% vector2]
私は明らかにできますvector[vector != single_character]
が、それは単一のキャラクターに対してのみ機能します。
文字ベクトルがあり、2番目のベクトルに存在する要素を除外したいと思います。ベクトル全体を考慮しながら、この場合の否定を処理する方法がわかりません
vector[vector ! %in% vector2]
私は明らかにできますvector[vector != single_character]
が、それは単一のキャラクターに対してのみ機能します。
あなたは近いです
vector[!vector %in% vector2]
または、「setdiffを使用しない」と言ったとしても
setdiff(vector, vector2)
vector1 <- letters[1:4]
set.seed(001)
vector2 <- sample(letters[1:15], 10, replace=TRUE)
vector1
[1] "a" "b" "c" "d"
vector2
[1] "d" "f" "i" "n" "d" "n" "o" "j" "j" "a"
vector2 [!(vector2 %in% vector1)] # elements in vector2 that are not in vector1
[1] "f" "i" "n" "n" "o" "j" "j"
新しい演算子を定義できます。
`%ni%` = Negate(`%in%`)
よりエレガントなソリューションが利用可能になりました:
library(textclean)
# master character vector
vector1 = c("blue", "green", "red")
# vector containing elements to be removed from master vector
vector2 = c("green", "red")
drop_element_fixed(vector1, vector2)
# Output:
# [1] "blue"