2014-09-01 67 views
-2

我想在其中一列的值爲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 
+3

這不是一個錯誤 - 它是一條警告消息,告訴您其中一個列是沒有「A」級別的因素。您可能更容易將數據存儲爲字符串而不是因素(例如,通過使用'stringsAsFactors = FALSE'參數創建數據)。 – josliber 2014-09-01 16:00:10

+0

您的權利,這是一個警告,但問題是,而不是獲得「A」,我得到。 – user34771 2014-09-01 16:10:20

+0

@ user34771,你甚至讀過josilber寫過什麼,或者你剛剛在「這不是錯誤」之後退出? * stringsAsFactors = FALSE參數*的哪部分不明白?請閱讀關於'?data.frame'的文檔。 – 2014-09-01 16:30:01

回答

0

以下命令後,應工作列的條目:

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) 
+0

非常感謝,它非常完美。如果你能給我一些關於將數據改爲人物的更多信息,我會非常感激。 – user34771 2014-09-01 16:19:14

+0

?as.character,?as.numeric,?as.factor等命令將幫助您。你也應該點擊打勾來接受/ upvote,如果你找到有用的答案。 – rnso 2014-09-01 16:34:15

+0

對不起,我還是個新手。我接受了你非常有用的答案,但仍然沒有足夠的聲望投票。 – user34771 2014-09-01 16:49:52