【发布时间】:2015-03-12 15:59:22
【问题描述】:
我正在尝试使用dplyr 的最新功能重写我的部分代码,方法是将data.frame() 替换为data_frame(),并将cbind() 替换为bind_cols():
library(rgeos)
library(dplyr)
mc <- montreal %>%
gCentroid(byid=TRUE) %>%
data.frame %>%
cbind(., name = montreal[["NOM"]])
当我尝试用 data_frame 替换 data.frame 时,我得到:
Error: data_frames can only contain 1d atomic vectors and lists
当我尝试用 bind_cols 替换 cbind 时,我得到:
Error: object at index 2 not a data.frame
有没有办法让这个工作?
这里,montreal 是一个 SpatialPolygonsDataframe:
GEOJSON 文件:http://elm.bi/limadmin.json
montreal <- readOGR("data/limadmin.json", "OGRGeoJSON")
【问题讨论】:
-
由于 S4 对象,您的
dput输出无法重建。您可能想尝试this question 的解决方案并返回可重现的数据。 -
您能否提供代码行来从头开始创建它而不是
dput? -
我相应地编辑了帖子
-
mc <- montreal %>% gCentroid(byid=TRUE) %>% data.frame %>% bind_cols(., data_frame(name=montreal[["NOM"]]))怎么样 -
data_frame()与data.frame()不同。data.frame()做了很多很多事情。data_frame()只做一个 - 它为每个输入创建一列。