Я отлаживаю причину, по которой при установке собственного пакета не удается установить пакеты Import
.
- Выберите подходящий корневой каталог.Запустите сеанс 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
должна автоматически установить пакет, указанный в строке импорта, но мы получаем вместо этого
ERROR: dependency 'dplyr' is not available for package 'mypackage'
Почему?
Примечание: я использую roxygen2
и правильный NAMESPACE
файл, но так как это мой собственный пакет, и у меня нет намерения чтобы отправить его в CRAN, я считаю эти данные неактуальными.(Являются ли они?)
Обновление
Если запись
Imports: dplyr
в любом месте mypackage/DESCRIPTION
необходима и достаточна для запуска рекурсивной установкиdplyr
каждый раз, когда устанавливается mypackage
, каково значение или вариант использования добавления функции
.onLoad <- function(libname, pkgname) {
install.packages("dplyr")
}
в некоторый файл .R
в каталоге mypackage/R
?
один метод предпочтительнее, новее или включает другой?
Обновление 2
Необходимо ли писать
Imports: dplyr (>= 0.7)
?
Если не указать требуемую версию каждого пакета, как можно гарантировать успешную установку пакета?Другими словами, каково эквивалентное решение R для виртуальных сред Python?