R语言如何用tidy方案过滤列表并提取指定类型的URL?
R tidyverse风格提取GitHub API返回的目录URL方案
错误原因
你的代码报错主要来自三个问题:
- 变量拼写错误:你定义的变量名为
reponse,后续调用时写为response,存在对象找不到的潜在问题 purrr::map的语法使用错误,没有正确实现按条件筛选的逻辑tidyr::unnest仅支持处理tibble/数据框类型的嵌套结构,直接对列表对象调用该方法会触发报错
完整可运行的tidy风格实现
# 加载所需依赖包 library(htTR) library(dplyr) library(tibble) library(tidyr) # 发送API请求 req <- GET("https://api.github.com/repos/thedivtagguy/daily-data/git/trees/master") # 提取tree节点的列表数据 tree_content <- content(req)$tree # 处理逻辑:先转成tibble再展开嵌套列表,最后过滤筛选 urls_df <- tree_content %>% # 将列表转为两列的tibble,value列存储每条记录的嵌套列表 enframe(value = "content") %>% # 将嵌套列表的键值对展开为独立列 unnest_wider(content) %>% # 仅保留type为tree的记录 filter(type == "tree") %>% # 按需选择保留的字段,这里保留目录路径和对应URL select(path, url) # 如果只需要URL的字符向量,可加pull提取 urls <- urls_df %>% pull(url)
如果偏好purrr的行绑定写法,也可以用以下更简洁的代码:
library(purrr) urls_df <- tree_content %>% map_dfr(~.x) %>% filter(type == "tree") %>% select(path, url)
内容的提问来源于stack exchange,提问作者Aman
相关产品推荐
相关产品推荐

