【问题标题】:In R, how to install packages used my own package automatically?在 R 中,如何自动安装使用我自己的包的包?
【发布时间】:2019-03-08 05:01:53
【问题描述】:

这个问题在以下站点附近:

R - Importing 'xlsx' package to my own package doesn't work

我在一些安装顺利的计算机上制作了一些名为aa 的包。

当我尝试在另一台计算机上安装自己的软件包时,会出现以下错误消息:

==> Rcmd.exe INSTALL --no-multiarch --with-keep.source aa

* installing to library 'C:/Users/aaaaaaaaaaa/Documents/R/win-library/3.5'
ERROR: dependencies 'knitr', 'rstan', 'readxl', 'testdat', 'openxlsx', 'xlsx', 'gridExtra' are not available for package 'aa'
* removing 'C:/Users/aaaaaaaaaaa/Documents/R/win-library/3.5/aa'
In R CMD INSTALL

Exited with status 1.

通过我的手,一旦我安装了上述错误中描述的包knitr,则错误消息如下,其中包knitr 消失了:

==> Rcmd.exe INSTALL --no-multiarch --with-keep.source aa

* installing to library 'C:/Users/aaaaaaaaaaa/Documents/R/win-library/3.5'
ERROR: dependencies 'rstan', 'readxl', 'testdat', 'openxlsx', 'xlsx', 'gridExtra' are not available for package 'aa'
* removing 'C:/Users/aaaaaaaaaaa/Documents/R/win-library/3.5/aa'
In R CMD INSTALL

Exited with status 1.

我想知道的是我自己的包中使用的包是不是自动安装的。

【问题讨论】:

  • 如果你想自动安装包,你必须将你的包发布到 CRAN
  • 这取决于你如何安装包。如果您使用 devtools 从 GitHub/a 存储库安装,并且依赖项列在 DESCRIPTION 文件的 Depends 或 Imports 中,它们应该会自动安装。但是,对于那组特定的包,至少有一个包失败的可能性很高,因为 knitr 需要 pandoc,rstan 需要编译器,而 xlsx 需要 rJava,这需要很多它不想告诉你的东西。跨度>
  • 这是感谢@Chris 的简短说明,我尝试理解您建议的页面。这对我来说很难。
  • 感谢@alistaire 的回复。如果包包含许多导致失败的需求,那么从 NAMESPACE 和 DESCRIPTION 中删除包会更好吗?因为如果我在 NAMESPACE 和DESCRIPTION 中保留必需的包,那么它会读取我们安装失败。

标签: r installation package-development


【解决方案1】:

也许你可以试试这样更简单的方法: 在您的.R 文件中添加以下代码

tryCatch({
  library(knitr)
}, error = function(e) {
  install.packages("knitr")
  library(knitr)
})

或者

if("knitr" %in% installed.packages()[,1]){
  library(knitr)
}else{
  install.packages("knitr")
  library(knitr)
}

【讨论】:

  • 感谢您快速、友好的回复。您建议的代码是我想要的。我想如果我在扩展名为.R 的所有文件中将library() 替换为您建议的代码,那么代码将运行良好,而无需注意我自己代码中的软件包安装。但是,我无法安装我的包,因此我无法执行我的代码,因此我无法执行您建议的代码。
猜你喜欢
  • 2022-01-22
  • 2012-08-18
  • 1970-01-01
  • 2019-12-06
  • 1970-01-01
  • 1970-01-01
  • 2017-09-30
  • 1970-01-01
  • 2020-08-15
相关资源
最近更新 更多