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

时间:2015-05-27 21:22:44

标签: r github package

我在GitHub上创建一个R包LW1949,它取决于GitHub上的另一个R包,jvamisc。当我尝试使用

安装LW1949时
require(devtools)
devtools::install_github("user/LW1949")

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

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

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

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

2 个答案:

答案 0 :(得分:28)

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


套餐开发商POV:

1)做:

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

在DESCRIPTION文件的Imports字段中添加依赖项。

2)在DESCRIPTION文件中手动添加一个字段“Remotes:”,指定github R在该软件包中的位置:

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


最终用户POV:

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

devtools::install_github(“hadley/devtools”, ref = “f21ca3516c”)

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

3)执行通常的install_github

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

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


this vignette

中详细介绍了这些步骤和其他选项

答案 1 :(得分:16)

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

Remotes: hadley/testthat

请参阅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