Решение
Используйте devtools::install()
вместо.
Пояснение
По данным Веб-сайт RStudio ,
Команда Build and Reload выполняет несколько шагов по порядку, чтобы обеспечить чистый и правильный результат:
1.Загружает любую существующую версию пакета (включая общие библиотеки, если это необходимо).
2.Компилирует и устанавливает пакет с помощью R CMD INSTALL.
3. Перезапускает базовый R-сеанс, чтобы обеспечить чистую среду для повторной загрузки пакета.
4.Перегружает пакет в новом R-сеансе, выполняя библиотечную функцию.
Хотя devtools::install()
установит для вас зависимости - от help("install.packages")
:
Для установки пакета используется R CMD INSTALL. также попытается установить зависимости пакета из CRAN, если они еще не установлены.
(выделение добавлено), это не относится только к R CMD INSTALL
(см. ?INSTALL
из R или R CMD INSTALL --help
из командной строки и т. д. (нет упоминаний об установке необходимых зависимостей).
Итак, кажется, что язык
Фактически, каждый раз, когда ваш пакет установлен, эти пакеты, если они еще не установлены, будут установлены на вашем компьютере (devtools :: load_all () также проверяет, установлены ли эти пакеты).
fromПакеты R Хэдли немного специфичны;он не относится к использованию R CMD INSTALL
(который, очевидно, использует функция сборки RStudio), но работает для devtools::install()
.Это вопрос личного вкуса, но, честно говоря, я настоятельно рекомендую использовать devtools
в вашем рабочем процессе разработки пакета.
Пример
Я удалил пакет rbenchmark
из своегоСистема через
remove.packages("rbenchmark")
затем создала фиктивный пакет с помощью
devtools::create("SOexample", rstudio = FALSE)
и отредактировала ОПИСАНИЕ, добавив rbenchmark
в Imports, так что SOexample
зависит от него.Я добавил следующий код в R/hello_world.R
:
hello_world <- function() print("Hello, world!")
Я попытался R CMD INSTALL
, но получил ошибку
* при установке в библиотеку '/ home / duckmayr / R /x86_64-pc-linux-gnu-library / 3.5 '
ОШИБКА: зависимость' rbenchmark 'недоступна для пакета' SOexample '
* удаление' / home / duckmayr / R / x86_64-pc-linux-gnu-library / 3.5 / SOexample '
Но, если я попытаюсь devtools::install()
:
> devtools::install("SOexample/")
Installing SOexample
trying URL 'https://cloud.r-project.org/src/contrib/rbenchmark_1.0.0.tar.gz'
Content type 'application/x-gzip' length 5093 bytes
==================================================
downloaded 5093 bytes
Installing rbenchmark
'/usr/lib/R/bin/R' --no-site-file --no-environ --no-save --no-restore --quiet \
CMD INSTALL '/tmp/RtmpA0NOMe/devtools723832018149/rbenchmark' \
--library='/home/duckmayr/R/x86_64-pc-linux-gnu-library/3.5' --install-tests
* installing *source* package ‘rbenchmark’ ...
** package ‘rbenchmark’ successfully unpacked and MD5 sums checked
** R
** demo
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (rbenchmark)
'/usr/lib/R/bin/R' --no-site-file --no-environ --no-save --no-restore --quiet \
CMD INSTALL '/home/duckmayr/SOexample' \
--library='/home/duckmayr/R/x86_64-pc-linux-gnu-library/3.5' --install-tests
* installing *source* package ‘SOexample’ ...
** R
** byte-compile and prepare package for lazy loading
** help
No man pages found in package ‘SOexample’
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (SOexample)