[R] Installing bioconduction packages in connection with loading an R package
Søren Højsgaard
@orenh @end|ng |rom m@th@@@u@dk
Sun Oct 11 20:51:29 CEST 2020
Dear all,
My gRbase package imports functionality from the bioconductor packages graph, Rgraphviz and RBGL.
To make installation of gRbase easy, I would like to have these bioconductor packages installed in connection with installation of gRbase, but to do so the user must use setRepositories() to make sure that R also installs packages from bioconductor.
Having to call setRepositories causes what can perhaps be called an (unnecessary?) obstacle. Therefore I have been experimenting with deferring installation of these bioc-packages until gRbase is loaded the first time using .onAttach; please see my attempt below.
However, if the bioc-packages are not installed I can not install gRbase so that does not seem to be a viable approach. (The bioc-packages appear as Imports: in DESCRIPTION).
Can anyone tell if it is a futile approach and / or perhaps suggest a solution. (I would guess that there are many CRAN packages that use bioc-packages, so other people must have faced this challenge before).
Thanks in advance.
Best regards
S�ren
.onAttach<-function(libname, pkgname) {
## package startup check
toinstall=c(
"graph",
"Rgraphviz",
"RBGL"
)
already_installed <- sapply(toinstall, function(pkg)
requireNamespace(pkg, quietly=TRUE))
if (any(!already_installed)){
packageStartupMessage("Need to install the following package(s): ",
toString(toinstall[!already_installed]), "\n")
}
## install if needed
if(!base::all(already_installed)){
if (!requireNamespace("BiocManager", quietly=TRUE))
install.packages("BiocManager")
BiocManager::install(toinstall[!already_installed], dependencies=TRUE)
}
}
[[alternative HTML version deleted]]
More information about the R-help
mailing list