Ошибка рекурсивной установки пакета R - PullRequest
0 голосов
/ 11 июня 2018

Я отлаживаю причину, по которой при установке собственного пакета не удается установить пакеты 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?

1 Ответ

0 голосов
/ 12 июня 2018

Используйте devtools::install("mypackage"), это работает для меня.

...