创建一个R包依赖于位于GitHub上的另一个R包

Jea*_*ams 46 r github package

我在GitHub上创建一个R包,LW1949,依赖于GitHub上的另一个R包,jvamisc.当我尝试使用安装LW1949时

require(devtools)
devtools::install_github("user/LW1949")
Run Code Online (Sandbox Code Playgroud)

我收到消息:Skipping 1 packages not available: jvamisc.

如何import(jvamisc)将LW1949包的部分(在NAMESPACE中)指向Github而不是CRAN来找到这种依赖?

当然这个问题之前已经被问过并得到了回答,但我没有成功地搜索它(也许是因为搜索术语如此常见--R,包,GitHub等).我偶然发现Travis CIPackrat,我都没用过.不知道他们是否会有所帮助.我希望尽可能简单的修复.(我们不是都会吗?)

我在R Studio版本0.98.1103中使用R版本3.1.3 for Windows.

小智 30

这个问题似乎最近得到了回答,在本期 devtools的github存储库中得到了解决.


包装开发商POV:

1)做:

devtools::use_package("jvamisc")
devtools::document()
Run Code Online (Sandbox Code Playgroud)

ImportsDESCRIPTION文件的字段中添加依赖项.

2)在DESCRIPTION文件中手动添加一个字段"Remotes:",指定github R应该在哪里寻找包:

#in DESCRIPTION
Imports: ...,
   jvamisc,
   ...
Remotes: JVAdams/jvamisc
Run Code Online (Sandbox Code Playgroud)


最终用户POV:

1)最终用户必须拥有devtools的最新开发版本(或至少与commit#f21ca3516c相对应的版本).你必须以某种方式"迫使他"更新他的devtools版本(我想只是把它放在安装说明中......想不出更好的方法)

devtools::install_github(“hadley/devtools”, ref = “f21ca3516c”)
Run Code Online (Sandbox Code Playgroud)

2)在卸载/重新加载devtools包时重新启动R Session

3)执行通常的install_github

require(devtools)
devtools::install_github("user/LW1949")
Run Code Online (Sandbox Code Playgroud)

我想这个功能迟早会被添加到devtools的CRAN版本中,因此用户无需获取开发版本,他将直接进入步骤3).


此小插图中详细介绍了步骤和其他选项


Vin*_*der 16

实际的解决方案似乎在您的DESCRIPTION文件中添加了该行

Remotes: hadley/testthat
Run Code Online (Sandbox Code Playgroud)

请参阅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
Run Code Online (Sandbox Code Playgroud)