递归R包安装失败

时间:2018-06-11 20:29:59

标签: r r-package

我正在调试安装自己的软件包无法安装Import - ed软件包的原因。

  • 选择合适的根目录。在该目录中启动R会话。
  • library(devtools)之后,运行devtools::create("mypackage")

将以下行保存在文件mypackage/R/f.R中。

@#' export
f <- function() {
    fruits <- data.frame("fruit"=c("orange", "kiwi"),
                         "color"=c("orange", "green"),
                         "shape"=c("spheroid", "ellipsoid"))
    library(dplyr)
    colors <- select(fruits, fruit, color)
    colors
}
  • Imports: dplyr的末尾添加mypackage/DESCRIPTION
  • 运行setwd(“mypackage”),然后运行devtools::build()
  • 运行remove.packages("dplyr")(以便随后以递归方式安装)。
  • 运行setwd("..")后跟install.packages("./mypackage_0.0.0.9000.tar.gz", repos = NULL, type = "source")

安装mypackage应自动安装Imports行中列出的软件包,但我们会改为

ERROR: dependency 'dplyr' is not available for package 'mypackage'

为什么?

N.B。:我正在使用roxygen2和正确的NAMESPACE文件,但由于这是我自己的软件包,我有no intention将其提交给CRAN,我认为这些细节无关紧要。 (是吗?)

更新

如果写作

Imports: dplyr
mypackage/DESCRIPTION中的任何地方

都是必要且足以在安装dplyr时触发mypackage的递归安装,添加函数的重要性或用例是什么

.onLoad <- function(libname, pkgname) {
    install.packages("dplyr")
}

.R目录中的某个mypackage/R文件中?

一种方法是优选的,更新的还是包含另一种方法?

更新2

是否有必要写

Imports: dplyr (>= 0.7)

如果没有指定每个软件包的必需版本,如何确保软件包安装成功?换句话说,什么是R的Python虚拟环境的等效解决方案?

1 个答案:

答案 0 :(得分:0)

使用devtools::install("mypackage"),这对我有用。