這裏的問題:你的載體是模式字符,所以當然這「不是一個數字」。最後一個元素被解釋爲字符串「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」都不是真的丟失。如果由於某種原因,有在爲「南」,那麼你就已經能夠一個因素變量的值只使用邏輯索引:
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」元素現在是一個真正的缺失值,在print中表示爲。
你可能想看看'setattr'從data.table包中查看MatthewDowle對我今天早些時候的問題的回答:http://stackoverflow.com/questions/9463980/how-to-assign-within-apply-family – 2012-02-27 22:24:17
這個例子沒有任何意義:你如何建議使用charact呃線性迴歸數據? – 2012-02-27 23:00:38
這是一個因素。最後我檢查了lm()可以處理w /因素。我應該在這個例子中拋出一個因素()。 – screechOwl 2012-02-27 23:12:14