重建自定义R软件包时

时间:2018-09-26 21:47:55

标签: r r-library

我正在重建一个自定义R包,该包在其他库中,DESCRIPTION文件的Depends行中具有RcppArmadillo。

我正在运行R 3.5.1。在RStudio中重建软件包时,出现错误:

ERROR: dependency ‘RcppArmadillo’ is not available for package 'custom package name'

根据R Packages book,在重建软件包时,必须在Depends / Imports下安装软件包。

1 个答案:

答案 0 :(得分:1)

解决方案

改为使用devtools::install()

说明

根据RStudio website

  

Build and Reload命令依次执行几个步骤,以确保获得干净正确的结果:
  1.卸载程序包的任何现有版本(必要时包括共享库)。
  2.使用R CMD INSTALL构建并安装软件包。
  3.重新启动基础的R会话,以确保重新加载程序包的环境干净。
  4.通过执行库函数,在新的R会话中重新加载软件包。

devtools::install()将为您安装依赖项-来自help("install.packages")

  

使用R CMD INSTALL安装软件包。 还将尝试安装   来自CRAN的软件包的依赖项(如果还没有的话)   已安装。

(强调),单独使用R CMD INSTALL并不是这种情况(请参阅R中的?INSTALL或命令行中的R CMD INSTALL --help等)–没有提及需要安装依赖性)。

因此,出现了语言

  

事实上,无论何时安装软件包,如果   还不存在,请安装在您的计算机上   (devtools :: load_all()还会检查软件包是否已安装)。

哈德利(Hadley)的R Packages中的

有点具体;它与使用R CMD INSTALL(RStudio的构建函数显然使用的)无关,但确实适用于devtools::install()。这是个人喜好问题,但老实说,我强烈建议您在软件包开发工作流程中使用devtools

示例

我通过以下方式从系统中删除了软件包rbenchmark

remove.packages("rbenchmark")

然后通过创建一个虚拟包

devtools::create("SOexample", rstudio = FALSE)

并编辑了DESCRIPTION,将rbenchmark放入了导入,以便SOexample依赖于它。我在R/hello_world.R中添加了以下代码:

hello_world <- function() print("Hello, world!")

我尝试了R CMD INSTALL,但收到了错误消息

  

*安装到库‘/home/duckmayr/R/x86_64-pc-linux-gnu-library/3.5’
  错误:依赖性“ rbenchmark”不适用于软件包“ SOexample”
  *删除“ /home/duckmayr/R/x86_64-pc-linux-gnu-library/3.5/SOexample”

但是,如果我尝试devtools::install()

> devtools::install("SOexample/")
Installing SOexample
trying URL 'https://cloud.r-project.org/src/contrib/rbenchmark_1.0.0.tar.gz'
Content type 'application/x-gzip' length 5093 bytes
==================================================
downloaded 5093 bytes

Installing rbenchmark
'/usr/lib/R/bin/R' --no-site-file --no-environ --no-save --no-restore --quiet  \
  CMD INSTALL '/tmp/RtmpA0NOMe/devtools723832018149/rbenchmark'  \
  --library='/home/duckmayr/R/x86_64-pc-linux-gnu-library/3.5' --install-tests 

* installing *source* package ‘rbenchmark’ ...
** package ‘rbenchmark’ successfully unpacked and MD5 sums checked
** R
** demo
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (rbenchmark)
'/usr/lib/R/bin/R' --no-site-file --no-environ --no-save --no-restore --quiet  \
  CMD INSTALL '/home/duckmayr/SOexample'  \
  --library='/home/duckmayr/R/x86_64-pc-linux-gnu-library/3.5' --install-tests 

* installing *source* package ‘SOexample’ ...
** R
** byte-compile and prepare package for lazy loading
** help
No man pages found in package  ‘SOexample’ 
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (SOexample)