2013-08-29 107 views
0

我想遍歷數據幀的每一行,對它進行測試,然後追加行中的一些數據。問題是當我添加行中的信息時,我得到的輸出會在列是因子數據類型時混亂。輸出R數據幀因子

for(i in nrow(test)){ print(test[i,]$name) } 

輸出:

[1] Bowling Green 
129 Levels: Air Force Akron Alabama Arizona Arizona State Arkansas Arkansas State Army Auburn Ball State Baylor Boise State Boston College Bowling Green Buffalo BYU ... Wyoming 

似乎很明顯,我要的是輸出「鮑靈格林」,而不是打印每個級別。於是我試着

for(i in nrow(test)){ print(factor(test[i,]$name)) } 

上面的代碼即爲所需的輸出,但是,當我建立它來得到它未能充分預期的效果:

for(i in nrow(test)){ print(c(factor(test[i,]$name), "one")) } 

輸出:

"61" "one" 
"94" "one" 

換句話說,它似乎給我的因子數

+0

你可以在你的'read.csv' /套'stringsAsFactors = FALSE'工作'read.table'呼籲避免你的data.frame因素(見'?讀取。表「詳情)。 – sgibb

回答

0

當我寫這個問題時,我想出了答案。我想如果它可能會有所幫助,我會把它留給其他人。如果版主認爲這是不好的主意,可隨意刪除。解決方案非常簡單。看起來我正在訪問該因素的基礎價值,這是我所需要的名稱只是被認爲是一個「標籤」。

即使這是當R從CSV文件中讀取數據時自然構成數據幀的方式,將名稱列表存儲爲因子也沒有意義。因此,這似乎使事情很好

test$name<- as.character(test$name) 
+0

如果您認爲將字符向量作爲名稱存儲在數據框中並不合適,那麼您需要了解如何使用stringAsFactors = FALSE作爲「read.table」和「dataframe」的參數。甚至有可能通過「選項」在全球範圍內關閉此功能,而許多人這樣做。 –