You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:45:03