Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create an R package that depends on another R package located on GitHub

Tags:

github

package

r

I am creating an R package on GitHub, LW1949, that depends on another R package on GitHub, jvamisc. When I try to install LW1949 using

require(devtools)
devtools::install_github("user/LW1949")

I get the message: Skipping 1 packages not available: jvamisc.

How can I point the import(jvamisc) part of the LW1949 package (in NAMESPACE) to Github instead of CRAN to find this dependency?

Surely this question has been asked and answered before, but I was not successful searching for it (perhaps because the search terms are so common - R, package, GitHub, etc.). I did stumble across Travis CI and Packrat, neither of which I've used. No idea if they would help. I would prefer as simple a fix as possible. (Wouldn't we all?)

I'm using R version 3.1.3 for Windows in R Studio Version 0.98.1103.

like image 832
Jean V. Adams Avatar asked May 27 '15 21:05

Jean V. Adams


People also ask

What are package dependencies in R?

A dependency is a code that your package needs to run. Dependencies are managed by two files. The DESCRIPTION manages dependencies at the package level; i.e. what packages needs to be installed for your package to work. R has a rich set of ways to describe different types of dependencies.


2 Answers

The actual solution seems to add in your DESCRIPTION file the line

Remotes: hadley/testthat 

see the documentation of devtools :

# Git Remotes: git::https://github.com/hadley/ggplot2.git  # Bitbucket Remotes: bitbucket::sulab/mygene.r@default, dannavarro/lsr-package  # Bioconductor Remotes: bioc::3.3/SummarizedExperiment#117513, bioc::release/Biobase  # SVN Remotes: svn::https://github.com/hadley/stringr  # URL Remotes: url::https://github.com/hadley/stringr/archive/master.zip  # Local Remotes: local::/pkgs/testthat  # Gitorious Remotes: gitorious::r-mpc-package/r-mpc-package 
like image 35
Vincent Guyader Avatar answered Oct 02 '22 17:10

Vincent Guyader


This question seems to have been answered quite recently, addressed in this issue of the devtools' github repository.


Package developer POV:

  1. do:

    usethis::use_package("jvamisc") devtools::document() 

to add the dependency in the Imports field of your DESCRIPTION file.

  1. manually add a field "Remotes:" in the DESCRIPTION file, specifying where on github R should look for the package:

    #in DESCRIPTION Imports: ...,   jvamisc,   ... Remotes: JVAdams/jvamisc 

End-user POV:

  1. the end user has to have the latest development version of devtools (or at least the one corresponding to commit #f21ca3516c). You have to somehow 'force him' to update his devtools version (I guess just put this in the installation instructions... Can't think of a better way)

    devtools::install_github(“hadley/devtools”, ref = “f21ca3516c”) 
  2. Restart the R Session on unload/reload the devtools package.

  3. do the usual install_github:

    require(devtools) devtools::install_github("user/LW1949") 

I guess this functionality will be added sooner or later to the CRAN version of devtools, so there will be no need for the user to fetch the dev version and he would go directly to step 3).


The steps and additional options are detailed in this vignette.

like image 79
slymore Avatar answered Oct 02 '22 18:10

slymore