R:如何判断任务 View 中的哪些包具有关联的小插图或演示

标签 r package demo cran vignette

在不安装软件包的情况下,是否有一种快速方法可以找出给定任务 View 中的哪些软件包具有与其关联的小插图或演示?我已经弄清楚如何从 R 中辨别给定任务 View 中的包:

library(ctv)
# get all the available task views
taskviews<-available.views()

# get task view of interest (e.g. "TimeSeries")
tv_of_interest<-taskviews[[which(sapply(taskviews,'[',1)=="TimeSeries")]] 

# get all the packages in the task view
pckgs <- tv_of_interest[['packagelist']][1]

这是我尝试过的,但尝试是不正确的,因为它们只考虑我已经拥有的包:

vignette(package= c(pckgs)) 
browseVignettes(package= c(pckgs))
demo(package=c(pckgs))

我希望避免抓取,因为我没有这方面的经验,但也许这是唯一的方法。有什么想法吗?

最佳答案

您不需要抓取,只需测试 CRAN 网络上是否存在 vignettes 文件夹即可。为了提高效率,请使用 httrHEAD:

hasvig <- function(packagename){
    require(httr)
    url = paste0(getOption("repos"),"/web/packages/",packagename,"/vignettes")
    c = HEAD(url)
    return(c$status_code==200)
}

归纳证明:

> hasvig("sp")
[1] TRUE
> hasvig("abd")
[1] FALSE

它适用于这些,因此它适用于所有事物。

如果需要的话,可以将其矢量化:

> hasvigs = Vectorize(hasvig)
> hasvigs(c("sp","abd","Rcpp"))
   sp   abd  Rcpp 
 TRUE FALSE  TRUE 

判断包是否有演示的唯一方法是下载源存档文件并查看它是否有演示子目录 - CRAN 站点没有提取源代码,并且它没有存储在任何地方的元数据中。可行,但困惑、缓慢,需要下载所有 CRAN 来测试所有包。

关于R:如何判断任务 View 中的哪些包具有关联的小插图或演示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22009048/

相关文章:

r - 收集和散布后指定顺序

python - 可以分发 setuptools 用于将 python 2 中实现的包移植到 3 中

HTML注入(inject)到别人的网站?

node.js - 如何通过 webhook 在dialogflow上回复来自Web演示的消息

iphone - 像在 Convertbot 中那样构建应用内演示的简单方法?

r - 我如何总结除我指定的列之外的所有列?

r - 使用 ggplot2 在 R 中按值排序条形图

r - 在 32 位 Ubuntu 上安装 RHadoop

r - 我应该如何在R包中处理 'helper'函数?

r - 如何使用 xlsx(R 包)设置特定单元格的值?