Используя пакет R sf
, как объединить sfc
объекты? Например, учитывая следующий код, как можно создать один sfc
объект, sfc12
который включает в себя геометрии из обоих sfc1
и sfc2
? ( length(sfc12)
должно быть 2.)
library(sf)
pt1 = st_point(c(0,1))
pt2 = st_point(c(1,1))
sfc1 = st_sfc(pt1) # An sfc object
sfc2 = st_sfc(pt2) # Another sfc object
# sfc12 = ?
Некоторые подходы, которые не работают:
sf_sfc(sfc1, sfc2)
# Error in vapply(lst, class, rep("", 3)) : values must be length 3,
# but FUN(X[[1]]) result is length 2
sfc1 + sfc2 # Seems to add the points coordinate-wise.
# Geometry set for 1 feature
# geometry type: POINT
# dimension: XY
# bbox: xmin: 1 ymin: 2 xmax: 1 ymax: 2
# epsg (SRID): NA
# proj4string: NA
# POINT(1 2)
rbind(sfc1, sfc2)
# [,1]
# sfc1 Numeric,2
# sfc2 Numeric,2
do.call(c, list(sfc1, sfc2))
работал на меня.sfc
объектов, используяReduce(c, sfcs)
илиpurrr::reduce(sfcs , c)
Рисуя из ответа @ TimSalabim , если ваши
sfc
объекты находятся в одном CRS, вы можете использоватьdo.call(rbind, list(sfc1, sfc2))
,источник