当我重新生成自定义 R 包时,不会安装"依赖"下列出的包



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

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

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

根据 R 包手册,在重新生成包时,必须安装"依赖/导入"下的包。

解决方案

请改用devtools::install()

解释

根据RStudio网站,

"生成并重新加载"命令按顺序执行几个步骤,以确保结果干净且正确:
    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 包有点具体; 它与使用R CMD INSTALL无关(RStudio 的构建函数显然使用(,但确实适用于devtools::install()。这是个人品味的问题,但老实说,我强烈建议在包开发工作流程中使用devtools

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

remove.packages("rbenchmark")

然后创建了一个虚拟包

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

并编辑了描述以将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)

最新更新