gpt4 book ai didi

r - 您可以静默安装 Bioconductor 软件包吗?

转载 作者:行者123 更新时间:2023-12-05 05:52:11 26 4
gpt4 key购买 nike

我正在 Snakemake 中编写一个调用 R 脚本的管道。这个R脚本有自己的环境,里面有r-baser-ggplot2r-biocmanager。我还需要包裹 ggbio可以使用 biocmanager 安装。我想在脚本被调用时静默安装这个包,因为我不希望它淹没我的终端。有没有办法做到这一点?我现在有这个,但这仍然会向终端输出分期付款信息:

if(!require(ggbio, quietly=TRUE)){  # if the package is not there, install it
BiocManager::install("ggbio")
library(ggbio)
}
...

我也试过这个我看到了here :

if(!suppressMessages(suppressWarnings(require(ggbio, quietly=TRUE)))){
BiocManager::install("ggbio")
library(ggbio)
}

# OR
if(!require(ggbio, quietly=TRUE)){
suppressMessages(suppressWarnings(BiocManager::install("ggbio")))
library(ggbio)
}
...

但这仍然会输出到终端。似乎也没有办法向 BiocManager::install("ggbio") 提供类似 quietly=TRUE 的参数。

编辑:invisible()capture.output()sink() 建议 here也不起作用:

# invisible(capture.output()) around install
if(!require(ggbio, quietly=TRUE)){
invisible(capture.output(BiocManager::install("ggbio"))) # doesn't work
}

# invisible(capture.output()) around entire if.
invisible(capture.output(if(!require(ggbio, quietly=TRUE)){ # doesn't work
BiocManager::install("ggbio")
}))

# sink() (Linux)
sink("/dev/null") # doesn't work
if(!require(ggbio, quietly=TRUE)){
BiocManager::install("ggbio")
}
sink()

# only invisible()
if(!require(ggbio, quietly=TRUE)){
invisible(BiocManager::install("ggbio")) # doesn't work
}

编辑 2:我了解到 Bioconductor 包在 bioconda channel 中可用,所以如果你像我一样使用 environment.yaml 文件,你可以像这样列出 Bioconductor 包:

channels:
- conda-forge
- bioconda
- defaults
dependencies:
- r-base=4.1.1
- r-ggplot2=3.3.5
- bioconductor-ggbio

最佳答案

如果你必须安静地安装包,你可以这样做:

suppressMessages({
if (!requireNamespace("ggbio", quietly = TRUE))
BiocManager::install("ggbio", quiet = TRUE)
})

但是查看安装是否有任何问题总是一个好主意。

关于r - 您可以静默安装 Bioconductor 软件包吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70243314/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com