我'm debugging the reason why installing one'自己的软件包无法安装 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
}
-
在
mypackage/DESCRIPTION
末尾添加Imports: dplyr
. -
运行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,我认为这些细节无关紧要 . (是吗?)
Update
如果写作
Imports: dplyr
mypackage/DESCRIPTION
中的任何地方都必须足以在安装 mypackage
时触发 dplyr
的递归安装,添加函数的意义或用例是什么
.onLoad <- function(libname, pkgname) {
install.packages("dplyr")
}
在 mypackage/R
目录中的某些 .R
文件中?
另一种方法是优选的,更新的还是包含另一种方法?
Update 2
是否有必要写
Imports: dplyr (>= 0.7)
?
如果没有指定每个包的所需版本,如何保证包安装成功?换句话说,什么是R的Python虚拟环境的等效解决方案?
1 回答
使用
devtools::install("mypackage")
,这对我有用 .