在R中使用tmap合并World数据后绘图报错该如何处理
问题根因
你使用基础R的merge()函数处理sf类的World空间对象时,返回结果会丢失sf类标识,变成普通数据框,tmap仅支持识别空间类型的输入对象,因此抛出类型不匹配的错误。
解决方案
方案1:使用sf包专属连接函数(推荐)
直接使用sf包内置的st_join()完成字段合并,会自动保留对象的空间属性:
# 按iso_a3字段左连接,保留World的全部空间对象 World2 <- st_join(World, df, by = "iso_a3", left = TRUE)
合并后的World2自带sf类属性,可直接传入tmap绘图。
方案2:手动转换merge结果为sf对象
如果已经通过基础merge()得到了World2,手动转换为sf对象即可:
# 指定空间列名,默认tmap自带的World对象空间列名为geometry World2 <- st_sf(World2, sf_column_name = "geometry")
处理完成后即可正常执行绘图代码:
tm_shape(World2) + tm_polygons("你的自定义变量名")
内容的提问来源于stack exchange,提问作者Jarvis
相关产品推荐
相关产品推荐

