Warning message:
In `<-.factor`( ...... )
invalid factor level, NA generated
這是因為資料框架裡面的字串預設會使用因子(factor)來儲存。若是某個儲存欄位是字串,但輸入的資料不在此欄位的因子列表也不是NA,那麼就會出現上述的問題。解決方式是在宣告資料框架的時候加入 stringsAsFactors = FALSE
下面的程式碼與輸出結果是預設值,也就是 stringsAsFactor = TRUE
> df <- data.frame("Month"=character(), "Days"=numeric())
> df[1,] <- c("January", 31)
Warning message:
In `[<-.factor`(`*tmp*`, iseq, value = "January") :
invalid factor level, NA generated
要避免此狀況就是加入 stringsAsFactors = FALSE
> df <- data.frame("Month"=character(), "Days"=numeric(), stringsAsFactors=FALSE)
> df[1,] <- c("January", 31)
> df[2,] <- c("February", 28)
> df
Month Days
1 January 31
2 February 28
參考資料與延伸閱讀
- Warning message: In `…` : invalid factor level, NA generated
- R字串與因子
- R語言中的資料結構
- 操作R的資料框架(Data frame)
- 在R中初始化一個空的data frame:欄位選用不同的資料型態
- R看data frame每個欄位的資料型態
沒有留言:
張貼留言