ここに問題があります:あなたのベクトルはモードの文字なので、もちろんそれは「数字ではありません」。その最後の要素は、文字列「NaN」として解釈されました。使用is.nan
は、ベクトルが数値の場合にのみ意味があります。(回帰関数によって適切に処理されるように)文字ベクトルに値がないようにする場合は、(引用符なしで)、を使用しますNA_character_
。
> tester1 <- c("2", "2", "3", "4", "2", "3", NA_character_)
> tester1
[1] "2" "2" "3" "4" "2" "3" NA
> is.na(tester1)
[1] FALSE FALSE FALSE FALSE FALSE FALSE TRUE
「NA」も「NaN」も文字ベクトルに実際に欠落しているわけではありません。何らかの理由で「NaN」である因子変数に値があった場合、論理インデックスを使用することができたはずです。
tester1[tester1 == "NaN"] = "NA"
# but that would not really be a missing value either
# and it might screw up a factor variable anyway.
tester1[tester1=="NaN"] <- "NA"
Warning message:
In `[<-.factor`(`*tmp*`, tester1 == "NaN", value = "NA") :
invalid factor level, NAs generated
##########
tester1 <- factor(c("2", "2", "3", "4", "2", "3", NaN))
> tester1[tester1 =="NaN"] <- NA_character_
> tester1
[1] 2 2 3 4 2 3 <NA>
Levels: 2 3 4 NaN
その最後の結果は驚くべきことかもしれません。残りの「NaN」レベルがありますが、どの要素も「NaN」ではありません。代わりに、「NaN」であった要素は、印刷で。として示される実際の欠落値になりました。