_%in%
_や_!%in%
_のようなRの_%!in%
_の短い否定はありますか?
もちろん、c("A", "B") %in% c("B", "C")
を!(c("A", "B") %in% c("B", "C"))
で無効にすることもできます(cf. this question )が、もっと好きですまっすぐ進むアプローチとブラケットのペアを保存します(おそらくほとんどの人はc("A", "B") != c("B", "C")
よりも!(c("A", "B") == c("B", "C"))
を好むでしょう)。
いいえ、それを行うための組み込み関数はありませんが、簡単に自分でコーディングすることができます
`%nin%` = Negate(`%in%`)
または
`%!in%` = Negate(`%in%`)
このスレッドとフォローアップの説明を参照してください: %in%operator-NOT IN
また、パッケージHmisc
には演算子%nin%
が含まれていることが指摘されているため、アプリケーションで使用している場合は既に存在しています。
library(Hmisc)
"A" %nin% "B"
#[1] TRUE
"A" %nin% "A"
#FALSE
いつでも作成できます:
> `%out%` <- function(a,b) ! a %in% b
> 1:10 %out% 5:15
[1] TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
それ以外の場合、setdiff
に似た関数があり、a
にないb
の-nique要素を返します。
> setdiff(1:10,5:15)
[1] 1 2 3 4
> setdiff(5:15,1:10)
[1] 11 12 13 14 15
実際、余分な括弧は必要ありません。!c("A", "B") %in% c("B", "C")
は機能します。
読みやすいものが必要な場合は、自分で定義するだけです。
"%nin%" <- function(x, table) match(x, table, nomatch = 0L) == 0L
これには、労力を無駄にしないという利点があります。結果を取得してから無効にするのではなく、結果を直接取得するだけです。 (違いは一般に些細なはずです)
_%!in%
_関数がlibrary(operators)
で利用可能になりました