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 <- data.frame()
for(i in 1:nrow(look_up)){
  new <- rbind(new,look_up$flat[i])
}

如果有人能告诉我为什么,感激不尽!我的结果应该是一个数据框,其中有一列称为“flat”,每行的值分别为 160 和 130。一旦我明白了这一点,我就可以开始做我想做的真正的事情了!

4

3 回答 3

3

不需要循环:

look_up[,"flat",drop=FALSE]

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

但是,几乎可以肯定,您正在以错误的方式处理您的实际问题。您可能应该问一个新问题,告诉我们您真正想要实现的目标。

于 2013-04-19T12:58:46.687 回答
0

您需要研究 的stringsAsFactors论点data.frame

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 ]
于 2013-04-19T13:02:25.353 回答
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这里,那么您的最终输出将是一个因素。希望这可以帮助。

于 2013-04-19T13:34:49.800 回答