我想从下面例子中的四条线(a,b,c,d)所描绘的区域创建一个多边形.如果你能帮我,那就太好了!

a <- data.frame (x  = c(1, 5, 9),
                  y = c(1, 0, 1))
b <- data.frame (x  = c(2, 2),
                 y = c(0, 5))
c <- data.frame (x  = c(1, 9),
                 y = c(4, 4))
d <- data.frame (x  = c(8, 8),
                 y = c(0, 5))

a <- a %>%
  st_as_sf(coords = c("x", "y")) %>%
  dplyr::summarize(do_union=FALSE) %>%
  st_cast("LINESTRING") 
b <- b %>%
  st_as_sf(coords = c("x", "y")) %>%
  dplyr::summarize(do_union=FALSE) %>%
  st_cast("LINESTRING") 
c <- c %>%
  st_as_sf(coords = c("x", "y")) %>%
  dplyr::summarize(do_union=FALSE) %>%
  st_cast("LINESTRING") 
d <- d %>%
  st_as_sf(coords = c("x", "y")) %>%
  dplyr::summarize(do_union=FALSE) %>%
  st_cast("LINESTRING")

ggplot() + geom_sf(data=a) + geom_sf(data=b) + geom_sf(data=c) + geom_sf(data=d)

推荐答案

这正是st_polygonize所做的事情

list(a, b, c, d) |>
  purrr::reduce(sf::st_union) |> 
  st_polygonize() |>
  ggplot() + 
  geom_sf(fill = "lightblue") +
  theme_bw(base_size = 20)

enter image description here

R相关问答推荐

在ComplexHeatmap中,如何更改anno_barplot()标题的Angular ?

基于R中的GPS点用方向箭头替换点

在R中列表的结尾添加数字载体

为什么当我try 在收件箱中使用合并功能时会出现回收错误?

如何使用rmarkdown和kableExtra删除包含折叠行的表的第一列的名称

R箱形图gplot 2 4组但6个参数

从gtsummary包中使用tBL_strata()和tBL_summary()时删除变量标签

如何计算前一行的值,直到达到标准?

pickerInput用于显示一条或多条geom_hline,这些线在图中具有不同 colored颜色

在特定Quarto(reveal.js)幻灯片上隐藏徽标

将嵌套列表子集化为嵌套列表

当月份额减go 当月份额

根据元素和前一个值之间的差值过滤矩阵的元素

绘制采样开始和采样结束之间的事件

从服务器在Shiny中一起渲染图标和文本

从非重叠(非滚动)周期中的最新数据向后开窗并在周期内计数

R中治疗序列的相对时间指数

重写时间间隔模糊连接以减少内存消耗

随机生成样本,同时在R内的随机样本中至少包含一次所有值

R,将组ID分配给另一个观测ID变量中的值的组合