gpt4 book ai didi

用 dplyr 中的 data_frame() 替换 data.frame 并用 bind_cols() 替换 cbind

转载 作者:行者123 更新时间:2023-12-04 12:29:20 28 4
gpt4 key购买 nike

我正在尝试使用 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")

最佳答案

所以我最终在这两种方法上运行了 microbenchmark,因为使用感觉有点奇怪:

mc <- montreal %>% 
gCentroid(byid=TRUE) %>%
data.frame %>%
bind_cols(., data_frame(name=montreal[["NOM"]]))

我尝试了两个不同的数据集:

world <- readOGR("data/world.json", "OGRGeoJSON")

wmbm = microbenchmark(
base = world %>%
gCentroid(byid=TRUE) %>%
data.frame %>%
cbind(., name=world[["name"]]),
dplyr = world %>%
gCentroid(byid=TRUE) %>%
data.frame %>%
bind_cols(., data_frame(name=world[["name"]])),
times=100
)

微基准测试结果:

Unit: milliseconds
expr min lq mean median uq max neval
base 13.78396 14.08301 14.21357 14.12023 14.16435 20.04362 100
dplyr 13.87098 14.10680 14.25245 14.14330 14.18020 17.63248 100

enter image description here

montreal <- readOGR("data/limadmin.json", "OGRGeoJSON")

lmbm = microbenchmark(
base = montreal %>%
gCentroid(byid=TRUE) %>%
data.frame %>%
cbind(., name=montreal[["NOM"]]),
dplyr = montreal %>%
gCentroid(byid=TRUE) %>%
data.frame %>%
bind_cols(., data_frame(name=montreal[["NOM"]])),
times=100
)

微基准测试结果:

Unit: milliseconds
expr min lq mean median uq max neval
base 1.597957 1.628723 1.736709 1.651747 1.686554 3.091738 100
dplyr 1.621092 1.642678 1.756978 1.659041 1.739707 3.751866 100

enter image description here

这里没有真正的结论。尽管它看起来有点慢,但我想我会坚持使用 dplyr-esque 解决方案以保持一致性。

关于用 dplyr 中的 data_frame() 替换 data.frame 并用 bind_cols() 替换 cbind,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27943442/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com