私のa列のNAに対応するmy b列の各行にNA値を割り当てようとしています。 列はデータフレームdfにあります。r、私の列のNAに対応するmy b列の各行にNA値を割り当てます。
しかし、次のコードを実行すると、すべてのb列がNAになります。
私は変更する必要がありますか?このため
for(i in 1:nrow(df))
{
row <- df[i,]
is.na(df$`a`) <- (df$b <- NA)
}
私のa列のNAに対応するmy b列の各行にNA値を割り当てようとしています。 列はデータフレームdfにあります。r、私の列のNAに対応するmy b列の各行にNA値を割り当てます。
しかし、次のコードを実行すると、すべてのb列がNAになります。
私は変更する必要がありますか?このため
for(i in 1:nrow(df))
{
row <- df[i,]
is.na(df$`a`) <- (df$b <- NA)
}
は、私たちは、 'B' の要素をサブセットするためにこれを使用してNA
df$b[is.na(df$a)] <- NA
vector
(
is.na(df$a)
)を作成することにより、ベクトル化オプションofthe利用することができます
data.table
を使用している場合は、この場所に(:=
)を割り当てることができます。
library(data.table)
setDT(df)[is.na(a), b := NA]
?is.na
によると、is.na<-
はNA
に要素を設定する汎用関数です。 is.na(x) <- value
の右側については、value
は、xで使用するのに適したインデックスベクトルであるである必要があります。
例:
df <- data.frame(a = LETTERS[1:5], b = 1:5)
is.na(df$b) <- c(2, 4)
df
# a b
#1 A 1
#2 B NA
#3 C 3
#4 D NA
#5 E 5
ので、NA
に設定されているdf$b
ベクトルの2番目と4番目の要素。 df$a
の対応する要素には同様NA
に設定する必要がある場合は今
、我々が使用することができます。
is.na(df$a) <- is.na(df$b)
df
# a b
#1 A 1
#2 <NA> NA
#3 C 3
#4 <NA> NA
#5 E 5
の回答やコメントから、この機能について学びました[is.na()がその引数を変更するのはなぜですか?](https://stackoverflow.com/questions/42107628/why-does-is-na-change-its-argument) – Axeman