2019年9月17日 星期二

invalid factor level, NA generated

在將資料塞入R語言的資料框架(Data frame)時出現下面的錯誤訊息

  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


參考資料與延伸閱讀

_EOF_

沒有留言:

張貼留言