合并含Multipolygons类型geometry列表的数据框时遇st_bbox错误
问题解决:合并SF对象与普通数据框时的
st_bbox错误 问题描述
通过邮政编码合并两个数据框:df1是包含Multipolygon几何列的SF对象,df2是普通dataframe。执行base R的merge函数后出现错误:
Error in UseMethod("st_bbox") : no applicable method for 'st_bbox' applied to an object of class "list"
错误原因
base R的merge函数会破坏SF对象的特殊类结构,将几何列转换为普通列表,导致SF包的函数(如st_bbox)无法识别处理。
解决方法
方法1:使用dplyr的left_join(推荐)
dplyr的连接函数原生支持SF对象,合并后会自动保留SF类结构:
library(dplyr) merged <- df1 %>% left_join(df2, by = c("key_in_1" = "key_in_2"))
方法2:手动转换后合并(base R方式)
先将SF对象转为普通dataframe,合并完成后再恢复SF类属性:
# 将df1转为普通dataframe df1_plain <- as.data.frame(df1) # 执行基础合并 merged_plain <- merge(df1_plain, df2, by.x = "key_in_1", by.y = "key_in_2", all.x = TRUE) # 转回SF对象,指定几何列名 merged <- st_sf(merged_plain, sf_column_name = "geometry")
内容的提问来源于stack exchange,提问作者TvCasteren
相关产品推荐
相关产品推荐

