検討:
a <- c("a", "b", "c")
b <- c("a", "e", "f")
c <- c("a", "h", "i")
> a %in% b %in% c
[1] FALSE FALSE FALSE
TRUE FALSE FALSE
各ベクトルの最初の要素は「a」であるため、これは に評価されると予想していました。そうでないのはなぜですか?
検討:
a <- c("a", "b", "c")
b <- c("a", "e", "f")
c <- c("a", "h", "i")
> a %in% b %in% c
[1] FALSE FALSE FALSE
TRUE FALSE FALSE
各ベクトルの最初の要素は「a」であるため、これは に評価されると予想していました。そうでないのはなぜですか?
あなたがやっていることは、最初にこの操作a %in% b
ですTRUE FALSE FALSE
。次に、基本的に chainc(TRUE,FALSE,FALSE) %in% c
を実行します。もちろん、結果は all になりFalse
ます。
これを試して、必要なブール値のベクトルを取得できます(位置を考慮して):
a == Reduce(function(u,v) ifelse(u==v, u, F), list(a,b,c))
#[1] TRUE FALSE FALSE
位置に依存するのではなく、共通の要素が必要な場合は、次のことができます。
Reduce(intersect, list(a,b,c))