从github仓库递归读取文件

时间:2019-10-02 20:59:06

标签: r git github

我在github中有一些文件,我想在R中递归读取。因此,如果执行此操作,我会获得所有文件的列表。

library(httr)
req <- req <- GET("https://api.github.com/repos/jakevdp/data-USstates/git/trees/master?recursive=1")
stop_for_status(req)
all.files <- unlist(lapply(content(req)$tree, "["), use.names = F)
file.names.only <- unlist(lapply(content(req)$tree, "[", "path"), use.names = F)

这不是我真正想要的。我希望能够从存储库本身中读取这些内容,就像在本地使用list.files一样。我们如何使这项工作?或者,至少,获取可在本地读取的存储库中每个文件的完整URL列表。

从这个存储库中说:https://github.com/jakevdp/data-USstates

1 个答案:

答案 0 :(得分:1)

我们可以使用rvest库相当简单地做到这一点。我们使用.js-navigation-open html节点选择链接,然后从链接中提取href值。我们得到了几个空字符串,.[. != ""]删除了这些字符串。

library(rvest) 

fileList <- read_html("https://github.com/jakevdp/data-USstates") %>% 
  html_nodes(".js-navigation-open") %>% 
  html_attr("href") %>%
  .[. != ""] # remove empty elements

 [1] "/jakevdp/data-USstates/blob/master/README.md"            "/jakevdp/data-USstates/blob/master/state-abbrevs.csv"   
 [3] "/jakevdp/data-USstates/blob/master/state-areas.csv"      "/jakevdp/data-USstates/blob/master/state-population.csv"