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]]

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to