我正在调试安装自己的软件包无法安装Import
- ed软件包的原因。
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
。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虚拟环境的等效解决方案?
答案 0 :(得分:0)
使用devtools::install("mypackage")
,这对我有用。