与sf包一起使用时data.table的行为不正确

时间:2017-10-15 00:40:53

标签: r data.table sf

data.table一起使用时,

sf::st_union执行的聚合不正确,而dplyr似乎正确处理它。有人可以解释为什么data.table会产生这个结果吗?

library(data.table)
library(sf)
library(dplyr)
nc <- st_read(system.file("shape/nc.shp",package="sf"))
nc_DT <- as.data.table(nc)
nc %>% group_by(SID74) %>% summarise(geom = st_union(geometry)) %>% nrow # prints 23 (correct answer)
nrow(nc_DT[,st_union(geometry),by=SID74])  # prints 83 (incorrect answer)

1 个答案:

答案 0 :(得分:3)

如果我们将其放在list中,则行数将为23

res <- nc_DT[, .(geom = st_union(geometry)),by=SID74]
nrow(res)
#[1] 23