【发布时间】:2019-09-18 13:27:22
【问题描述】:
我有一个由 sf 对象组成的列表列的 tibble。这些 sf 对象中的每一个都有一个或多个多边形行。与取消嵌套 tibbles 列表的方式类似,我希望取消嵌套 sf 对象。
数据看起来像这样
library(sf)
library(tibble)
poly <- st_polygon(list(cbind(c(0,3,3,0,0),c(0,0,3,3,0))))
a = st_sf(st_sfc(poly,poly))
b = st_sf(st_sfc(poly,poly))
df <- tibble(name=c('a','b'),poly=list(a,b))
我希望结果是一个看起来像这样的 sf 对象:
|name | geometry |
|-----|----------|
|a | POLYGON |
|a | POLYGON |
|b | POLYGON |
|b | POLYGON |
但是,当我使用 unnest 时,我收到一个错误,并且由于某种原因无法找到 unnest.sf。
编辑:我使用的是 sf 版本 0.7-4
谢谢!
本
【问题讨论】:
-
您是否加载了
tidyr以便使用unnest?我正在使用 tidyr 0.8.3,sf 0.7-6 并且可以嵌套到类似于您正在寻找的东西中。这是一个包含poly列sf几何的数据框;打电话给st_as_sf然后给我一个合适的sf对象 -
@camille 我可以用 tidyr 1.0.0 重现这个。也许是回归?
-
我正在使用 tidyr 0.8.3 并升级到 sf 0.7-7。我认为它有效,但我收到了一些警告。如果我这样做:st_as_sf(unnest(df))。我得到一个看起来正确的 sf 对象,但我也收到警告消息。也许这很好? “警告消息:1:在 bind_rows_(x, .id) 中:矢量化 'sfc_POLYGON' 元素可能无法保留其属性 2:在 bind_rows_(x, .id) 中:矢量化 'sfc_POLYGON' 元素可能无法保留其属性”