我想在其中一列的值爲0時更改數據框的列中的條目名稱。我試過這種方式,但得到一條錯誤消息。假設我想改變1,2,3,以「A」時,第3列的條目是0根據條件重新命名列中的值
df[ df[ , 3 ] == 0 , c(1,2,4) ] <- "A"
我得到
Warning message:
In `[<-.factor`(`*tmp*`, iseq, value = c("A", "A", "A", :
invalid factor level, NA generated
我想在其中一列的值爲0時更改數據框的列中的條目名稱。我試過這種方式,但得到一條錯誤消息。假設我想改變1,2,3,以「A」時,第3列的條目是0根據條件重新命名列中的值
df[ df[ , 3 ] == 0 , c(1,2,4) ] <- "A"
我得到
Warning message:
In `[<-.factor`(`*tmp*`, iseq, value = c("A", "A", "A", :
invalid factor level, NA generated
以下命令後,應工作列的條目:
df[,c(1,2,4)]=sapply(df[,c(1,2,4)], function(x) as.character(x))
可以縮短到下面由josilber在評論中建議:
df[,c(1,2,4)]=sapply(df[,c(1,2,4)], as.character)
這不是一個錯誤 - 它是一條警告消息,告訴您其中一個列是沒有「A」級別的因素。您可能更容易將數據存儲爲字符串而不是因素(例如,通過使用'stringsAsFactors = FALSE'參數創建數據)。 – josliber 2014-09-01 16:00:10
您的權利,這是一個警告,但問題是,而不是獲得「A」,我得到。 –
user34771
2014-09-01 16:10:20
@ user34771,你甚至讀過josilber寫過什麼,或者你剛剛在「這不是錯誤」之後退出? * stringsAsFactors = FALSE參數*的哪部分不明白?請閱讀關於'?data.frame'的文檔。 – 2014-09-01 16:30:01