如何获取CRAN上所有包的github repo url?

如何获取CRAN上所有包的github repo url?,r,github,web-scraping,R,Github,Web Scraping,我想为CRAN上的所有包提取github repo url。我尝试先阅读CRAN的链接,得到所有包名的表,其中还包含每个包的描述页面的url,因为我想通过描述页面提取github repo url。但我无法获取完整的url。你能帮我做这个吗?或者有没有更好的方法来获取所有包的repo url 这是我的补充质询: 实际上,我想过滤那些有官方github回购协议的PKG,比如一些PKG,比如xfun或fddm。我发现我可以从CRAN上的PKG描述中提取用户名和repo名称,并将它们放在github格

我想为CRAN上的所有包提取github repo url。我尝试先阅读CRAN的链接,得到所有包名的表,其中还包含每个包的描述页面的url,因为我想通过描述页面提取github repo url。但我无法获取完整的url。你能帮我做这个吗?或者有没有更好的方法来获取所有包的repo url

这是我的补充质询: 实际上,我想过滤那些有官方github回购协议的PKG,比如一些PKG,比如xfun或fddm。我发现我可以从CRAN上的PKG描述中提取用户名和repo名称,并将它们放在github格式的url中。(对于大多数url,其格式相同,例如:。例如,对于包
xfun
,其格式类似:

现在,我得到了其中的一些,比如:(三个)

我想知道如何获取所有这些元素的url。我知道使用glue pkg可以替换url中的元素。对于通过替换元素(用户名和名称)获取url,我尝试了map() 和map_dfr()函数。但它返回错误:parse_url(url)中的错误:length(url)==1不是真的

这是我的密码:

get <- map_dfr(dat, ~{
  
  username <- dat$user
  reponame <- dat$package
  
pkg_url <- GET(glue::glue("https://github.com/{username}/{reponame}"))

})

get我想建议一种不同的方法来达到你想要的目的

正如评论中所讨论的,并非所有R包都有公共GitHub repo

下面是从CRAN数据库中检索信息的一些代码的版本,包括包名和URL字段。如果包具有公共GH repo,则作者很可能已将该信息包含在URL字段中:可能有一些包的GH repo信息是可猜测的(即GH用户名与(例如)维护者电子邮件地址中的标识符相同;GH repo名称与软件包名称相同),但为了获得相对较低的回报,进行所有猜测(并访问GitHub以查看猜测是否正确)似乎需要做大量工作


getPackageRDS您能澄清一下“github repo url”是什么意思吗?许多CRAN包没有自己的github repo,尽管您可能(?)是指这里维护的非官方只读镜像吗?你能给我们展示一个例子,说明你希望前几个包的结果是什么吗?正如Ben所说。虽然许多CRAN包都在GitHub上,但这不是一个要求。一些旧包仍在R-Forge上,一些可能在GitLab或BitBucket上,而另一些则很可能处于关闭状态y公共源代码存储库。这就是生活。嗨,本和德克,谢谢你们的回复!我已经添加了一些关于我已经做了什么以及我下一步想做什么的说明,如果你们能帮我,我将非常感激!)@Ben Bolker能否请您将示例数据框作为文本而不是屏幕截图?屏幕截图不利于可访问性。非常感谢Ben!在您的代码帮助下,我成功地解决了这个问题!非常感谢!