2013-08-29 72 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”的参数。甚至有可能通过“选项”在全球范围内关闭此功能,而许多人这样做。 –