How to install dependencies when using “R CMD INSTALL” to install R packages?

后端 未结 6 669
心在旅途
心在旅途 2020-12-15 15:44

I\'m developing my first R package (using R 2.13, Ubuntu 10.10). Let\'s call it foo and let\'s say that the code in the R/ directory begins with the line libra

相关标签:
6条回答
  • 2020-12-15 16:20

    The mechanism to do this is to add an entry in the depends field in your DESCRIPTION file.

    Depends: bar
    

    This will load the bar library if already installed, otherwise will install it from CRAN.

    This is described in section 1.1.1 of the Writing R extensions manual: http://cran.r-project.org/doc/manuals/R-exts.html#The-DESCRIPTION-file

    0 讨论(0)
  • 2020-12-15 16:21

    Fortunately Devtools provides an easy solution: install_deps()

    install_deps(pkg = ".", dependencies = logical, threads = getOption("Ncpus",1))

    Arguments:
    pkg: package description, can be path or package name. See ‘as.package’ for more information

    dependencies: ‘logical’ indicating to also install uninstalled packages which this ‘pkg’ depends on/links to/suggests. See argument ‘dependencies’ of ‘install.packages’.

    threads: number of concurrent threads to use for installing dependencies. It defaults to the option ‘"Ncpus"’ or ‘1’ if unset.

    Examples:

    install_deps(".")  
    install_deps("/path/to/package",dependencies="logical")
    
    0 讨论(0)
  • 2020-12-15 16:23

    Similar to @Jonathan Le, but better for script usage :

    sudo R --vanilla -e 'install.packages("forecast", repos="http://cran.us.r-project.org")'
    
    0 讨论(0)
  • 2020-12-15 16:31

    I ended up just using a bash here-document and specifying the cloud mirror to find the dependencies:

    sudo R --vanilla <<EOF
    install.packages('forecast', repos='http://cran.us.r-project.org')
    q()
    EOF
    

    the R package is "forecast", the cloud mirror I used was http://cran.us.r-project.org. If you want to use a different mirror, here they all are: https://cran.r-project.org/mirrors.html

    The above worked for me in getting R packages into an AWS EMR bootstrap shell script.

    0 讨论(0)
  • 2020-12-15 16:42

    Actually, re-reading the R extensions guide, it doesn't say that R CMD INSTALL will get dependencies from CRAN. The install.packages() method from within R will do that, but at first glance I don't think R CMD INSTALL does.

    You can use install.packages to install from a .tar.gz, but you have to set repos=NULL, and then this applies:

     dependencies: logical indicating to also install uninstalled packages
              on which these packages depend/suggest/import (and so on
              recursively).  Not used if repos = NULL.
    

    I suspect the thing to do is to get the dependencies out of the DESCRIPTION file and then run R and do an install.packages() on those when you are testing your build in a clean environment.

    0 讨论(0)
  • 2020-12-15 16:43

    Following Romain Rossi's idea, here is a simple shell script which installs every argument you send it's way (assuming it's a package):

    #!/bin/sh 
    for f in $* 
        do 
        sudo R --vanilla -e "install.packages('"$f"', repos='http://cran.us.r-project.org')" 
    done
    
    0 讨论(0)
提交回复
热议问题