LO不在R中工作

时间:2013-04-19 12:55:38

标签: r

这不起作用,我不确定原因。

look_up  <- data.frame(flat=c("160","130"),
                   street=c("stamford%20street", "doddington%20grove"),
                   city = c("London", "London"),
                   postcode = c("SE1%20", "se17%20"))

new <- data.frame()
for(i in 1:nrow(look_up)){
  new <- rbind(new,look_up$flat[i])
}

感谢有人能告诉我为什么请!我的结果应该是一个数据框,其中一列称为“flat”,每行的值为160和130。一旦我理解了这一点,我就可以进入我想要做的真实事情了!

3 个答案:

答案 0 :(得分:3)

不需要循环:

look_up[,"flat",drop=FALSE]

如上所述,循环问题是自动转换为因子。您可以将options(stringsAsFactors=FALSE)放在脚本前面以避免这种情况。

然而,几乎可以肯定的是,你正以错误的方式接近你的实际问题。您应该问一个新问题,在那里您告诉我们您实际想要实现的目标。

答案 1 :(得分:0)

您需要查看data.framestringsAsFactors参数。

look_up  <- data.frame(flat=c("160","130"),
                   street=c("stamford%20street", "doddington%20grove"),
                   city = c("London", "London"),
                   postcode = c("SE1%20", "se17%20"), 
                   stringsAsFactors = FALSE)
look_up[, "flat", drop = FALSE ]

答案 2 :(得分:0)

您还可以执行以下操作:

> look_up  <- data.frame(flat=c("160","130"),
+                        street=c("stamford%20street", "doddington%20grove"),
+                        city = c("London", "London"),
+                        postcode = c("SE1%20", "se17%20"))
> 
> new <- look_up[,1,drop=FALSE]
> new
  flat
1  160
2  130
> class(new)
[1] "data.frame"

这表明您的最终所需输出是列数为160和130的数据帧。 如果您不在此处添加drop=FALSE,那么您的最终输出将是一个因素。 希望这会有所帮助。