データフレーム内の特定の値のインスタンスをすべて検索し、それらをNAに置き換えようとしています。私はこれと同じだと思うこの2つの異なる方法を試しましたが、私は異なる結果を得ます。たとえば:| Rはデータフレーム内の値を|演算子vs%in%
df <- data.frame(a=c(1,2),b=c(3,4))
df[df == 1 | df == 4] <- NA
は私に期待される結果が得られます。
df
# a b
# 1 NA 3
# 2 2 NA
df <- data.frame(a=c(1,2),b=c(3,4))
df[df %in% c(1,4)] <- NA
一方は何もしません:
df
# a b
# 1 1 3
# 2 2 4
これは私が使用している場合は理由のようです"|"演算子では、データフレーム要素を要素で検索しますが、%で%を使用すると、データフレームベクトルをベクトル(列単位)で検索しますが、理由はわかりません。私たちはそう%in%
function (x, table)
match(x, table, nomatch = 0L) > 0L
ためのコードを見れば
df <- data.frame(a=c(1,2),b=c(3,4))
df == 1 | df == 4
# a b
# [1,] TRUE FALSE
# [2,] FALSE TRUE
df %in% c(1,4)
# [1] FALSE FALSE
'%in%'は、あなたがdata.frameに必要な方法では動作しません。それはベクトルで動作します – akrun