r - 如何使用 full_join 将 sf map 数据与 tibble 数据连接起来?

标签 r sf

我正在尝试使用 tibble 连接来自 rnaturalearth 的 map 数据。

这是我的 tibble 的一部分输出:

structure(list(iso3_code = c("AFG", "AFG", "ALB", "ALB", "DZA", 
"ASM"), country = c("Afghanistan", "Afghanistan", "Albania", 
"Albania", "Algeria", "American Samoa"), item = c("Maize", "Sugar cane", 
"Maize", "Soybeans", "Maize", "Sugar cane"), value = c(106670, 
25421, 391104, 744, 4142, 30)), row.names = c(NA, -6L), class = c("tbl_df", 
"tbl", "data.frame"))

这是我使用的代码:

library(rnaturalearth)
world <- ne_countries(scale = "small", returnclass = "sf")  
world_filtered = world %>% 
    select(country = name_long, iso3_code = iso_a3, geometry) %>%
    filter(!is.na(iso3_code)) %>% 
    filter(country != "Antarctica") 

map = full_join(world_filtered, country_data, by = "iso3_code") 

我收到这个错误:

Error: All columns in a tibble must be vectors.
x Column `geometry` is a `sfc_MULTIPOLYGON/sfc` object.
Run `rlang::last_error()` to see where the error occurred.

我知道我之前运行过这段代码并且它有效。我最近刚刚做了一些更新,也许这可能会影响这段代码。如果有人知道这里发生了什么,将不胜感激。

最佳答案

我最近也遇到了这个问题。

这是因为tidyverse(基于tibble)无法识别sfc_MULTIPOLYGON/sfc对象。

解决方法是:

library(sf)

关于r - 如何使用 full_join 将 sf map 数据与 tibble 数据连接起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61052904/

相关文章:

R 包 DT - 如何突出显示每行最大值

R:如何访问数据帧元素中加载的数组成员

r - 使用 geom_sf 绘图时无法删除网格线

spatial - 有没有办法确定 sf 中多边形的主要方向?

r - 无法在 R : Error in CPL_geos_is_empty(st_geometry(x)) 中绘制 SF 线串

r - 将某些列的名称作为数据框每一行的一个单元格

r 将不等于 1 或 2 或 3 的值替换为其他值

r - 为什么对 sf 中每个特征差异的不同方法会导致不同的绘图缩放?

r - 使用 geom_sf 时如何更改图例形状?

r - 在 R 中向维恩图添加百分比