【发布时间】:2021-08-25 17:25:53
【问题描述】:
我不熟悉在 r 中使用 json 并想使用其中的数据创建地图,但到目前为止我无法将其转换为可用的数据结构格式。
这是我尝试过的:
library(jsonlite)
library(tidyverse)
ind_waterways <- jsonlite::fromJSON( url("https://raw.githubusercontent.com/india-in-data/waterways/master/ind_waterways.json"))
ind_waterways
ind_waterways %>%
map_if(is.data.frame, list) %>%
as_tibble() %>%
unnest()
但是当我尝试unnest 时,我得到了错误:
ind_waterways$features %>%
map_if(is.data.frame, list) %>%
as_tibble() %>%
unnest(coordinates)
错误:无法对不存在的列进行子集化。 x 列
coordinates不存在。运行rlang::last_error()看看哪里出错了。
【问题讨论】:
-
as_tibble后面没有coordinates列。第二种情况是'properties'和'geometry' -
@akrun 当我运行
ind_waterways$features %>% map_if(is.data.frame, list)然后我得到type & coordinates列。我正在尝试理解您在下面的答案并运行它,并将很快接受它。 -
我确实在数据子集上测试了该函数,但使用完整数据需要时间
-
这是因为当您执行
map(coordinates, as_tibble))时,有一个默认命名。我应该有美元map(coordinates, ~ tibble(lat = .x[,1], lon = .x[,2])) -
是的,这更好,再次感谢!!
标签: r json dataframe ggplot2 tidyr