【问题标题】:R package with CRAN and Bioconductor dependencies具有 CRAN 和 Bioconductor 依赖项的 R 包
【发布时间】:2016-04-09 14:37:48
【问题描述】:

我有一个 R 包存储在本地 git 服务器上。这个包有一系列的依赖——来自 CRAN 和 Bioconductor 的包。使用devtools包,我可以直接从git安装:

library(devtools)
install_git("http://mygitserver.com/username/reponame")

我注意到此安装过程未能安装所有 Bioconductor 依赖项,但所有 CRAN 依赖项都已正确安装。

如何设置包的依赖项(在DESCRIPTION 文件中),以便所有 Bioconductor 包依赖项也都正确安装。我注意到,当软件包托管在 Bioconductor 镜像上并通过 biocLite() 安装时,这不是问题,这表明也许我可以通过列出一组镜像来解决这个问题,供 install.packages() 搜索,然后再声明找不到包。有没有办法自动获取所有这些依赖项?

【问题讨论】:

  • 试试setRepositories(ind=1:2)
  • 看起来这样可以解决问题。为什么这行得通?它是否指定了 repos 的“路径”(即 CRAN 和/或 Bioconductor)?
  • 请参阅下面我的回答,了解“为什么有效”

标签: r package bioconductor cran


【解决方案1】:

对于 github 存储库的不同答案是使用 biocLite()

source("https://bioconductor.org/biocLite.R")
biocLite("username/reposname")

为 github 包发送到 devtools,为其他人发送到 CRAN / Bioconductor。

source() 命令安装或更新 BiocInstaller 包,因此当您的 BiocInstaller 版本为最新时,变化是

BiocInstaller::biocLite("username/reposname")

为您的示例使用 devtools,但为您的 R 和 Bioconductor 版本使用正确的 Bioconductor 存储库

install_git("http://mygitserver.com/username/reponame", 
            repos=BiocInstaller::biocinstallRepos())

repos 参数最终传递给install.packages()。更具体地说,对我来说,我有

> biocinstallRepos()
                                               BioCsoft 
           "https://bioconductor.org/packages/3.3/bioc" 
                                                BioCann 
"https://bioconductor.org/packages/3.3/data/annotation" 
                                                BioCexp 
"https://bioconductor.org/packages/3.3/data/experiment" 
                                              BioCextra 
          "https://bioconductor.org/packages/3.3/extra" 
                                                   CRAN 
                             "https://cran.rstudio.com" 

在第二个注解包,BioCann,url。

【讨论】:

  • 这也是一个很好的解决方案,但是,正如已经建议的那样,它显然省略了org.Hs.eg.db。知道为什么吗?当我运行install.packages("org.Hs.eg.db", repos=BiocInstaller::biocinstallRepos()) 时,我能够得到包。
  • 您能否使您的示例可重现,即提供一个指向依赖或导入 org.Hs.eg.db 的非 github 托管包的 url?我用更多信息更新了我的回复
【解决方案2】:

简短的回答: setRepositories(ind=1:2)

tl;博士

setRepositories 的文档告诉我们“已知存储库的默认列表存储在文件 'R_Home/etc/repositories' 中”。我们可以通过几种方式追踪它,但为了方便起见,让我们将存储库表读入 R 中(这将切断该文件中的所有注释文档,但如果你是有兴趣。

read.table(file.path(R.home(), "etc", "repositories"), sep = "\t")

                             menu_name                                 URL default source win.binary mac.binary
CRAN                              CRAN                              @CRAN@    TRUE   TRUE       TRUE       TRUE
BioCsoft                 BioC software                %bm/packages/%v/bioc   FALSE   TRUE       TRUE       TRUE
BioCann                BioC annotation     %bm/packages/%v/data/annotation   FALSE   TRUE       TRUE       TRUE
BioCexp                BioC experiment     %bm/packages/%v/data/experiment   FALSE   TRUE       TRUE       TRUE
BioCextra                   BioC extra               %bm/packages/%v/extra   FALSE   TRUE       TRUE       TRUE
CRANextra                CRAN (extras)  http://www.stats.ox.ac.uk/pub/RWin   FALSE   TRUE       TRUE       TRUE
Omegahat                      Omegahat           http://www.omegahat.org/R   FALSE   TRUE      FALSE      FALSE
R-Forge                        R-Forge        http://R-Forge.R-project.org   FALSE   TRUE       TRUE       TRUE
rforge.net                  rforge.net               http://www.rforge.net   FALSE   TRUE       TRUE       TRUE
CRANextra[https]  CRAN (extras, https) https://www.stats.ox.ac.uk/pub/RWin   FALSE   TRUE       TRUE       TRUE
R-Forge[https]         R-Forge [https]       https://R-Forge.R-project.org   FALSE   TRUE       TRUE       TRUE
rforge.net[https]   rforge.net [https]              https://www.rforge.net   FALSE   TRUE       TRUE       TRUE

想象每一行都有一个索引号。当您调用 setRepositories(ind = 1:2) 时,您是在告诉 R 查看第 1 行和第 2 行中的存储库。

【讨论】:

  • 我注意到有些注解包,如org.Hs.eg.db,即使指定setRepositories(ind=1:5)后也找不到
  • 感谢您的回答,但是 BioCsoft 始终保持在第 2 位的保证在哪里?!对我来说,这似乎是一个神奇的数字,可能会在未来的任何一天发生变化……
猜你喜欢
  • 1970-01-01
  • 2014-09-20
  • 2017-01-26
  • 2020-10-10
  • 1970-01-01
  • 2019-04-09
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
相关资源
最近更新 更多