我想知道是否有一个很好的方法来检查一个软件包属于Bioconductor(因为安装是不同于R CRAN包。
例如,我想做这样的事情:
libraries <- c("ggplot2","BioBase")
check.libraries <- is.element(libraries, installed.packages()[, 1])==FALSE
libraries.to.install <- libraries[check.libraries]
if (length(libraries.to.install!=0)) {
install.packages(libraries.to.install)
}
success <- sapply(libraries,require, quietly = FALSE, character.only = TRUE)
if(length(success) != length(libraries)) {stop("A package failed to return a success in require() function.")}
字符串
这段代码检查库是否已安装(如果未安装)。但是,由于生物导体包以不同的方式安装,即:Biocmanager::install(“Biobase”)我想做一个条件。我检查了BiocCheck,但我认为它不起作用。
3条答案
按热度按时间txu3uszq1#
这不是最聪明的答案,但你可以准备一个详尽的所有软件包的列表,也许把它写在csv中,以避免一次又一次地这样做。下载从here获取的BioConductor软件包代码。
字符串
现在你可以从这个dataframe中过滤你想要检查的包-
型
通过
result$Package[result$source == 'CRAN']
从CRAN
获取要安装的软件包,并通过BioConductor作为result$Package[result$source == 'BioConductor']
获取要安装的软件包,这些软件包可以传递给它们各自的函数。tcbh2hod2#
字符串
我想这个会有帮助。
nlejzf6q3#
您可以通过以下方式获得所有可用生物导体包的列表:
字符串
正如其他人提到的CRAN:
installed.packages()
.参见:管理生物导体封装然后你可以用一个if-else语句写一个for循环来遍历你所有的包。
但是,如果你不想处理这个问题,我会看看包管理器,它可以处理不同的源,例如。GitHub、Bioconductor和CRAN。您可以查看:r-lib/pak或我的forked version,后者允许您使用
pak::pkg_load
,它首先检查您的软件包是否已经安装,如果没有,它将安装它,然后将尝试加载它。pak允许你给予一个你想要安装的包的列表/向量并安装它,而不需要指定它是Github还是CRAN等。另一种选择是pacman,它的功能非常类似。