Временно установите пакет R, только для текущего сеанса
Иногда при переполнении стека возникает вопрос относительно пакета, который не установлен в моей системе и который я не планирую повторно использовать позже.
Если я установлю пакет с помощью install.packages()
, он будет помещен в одну из моих R-инсталляционных библиотек, а затем будет занимать некоторое пространство для хранения и обновляться каждый раз при запуске update.packages()
.
Есть ли способ установить пакет только для текущего сеанса R?
Ответы
Ответ 1
Вы можете временно установить пакет со следующей функцией:
tmp.install.packages <- function(pack, dependencies=TRUE, ...) {
path <- tempdir()
## Add 'path' to .libPaths, and be sure that it is not
## at the first position, otherwise any other package during
## this session would be installed into 'path'
firstpath <- .libPaths()[1]
.libPaths(c(firstpath, path))
install.packages(pack, dependencies=dependencies, lib=path, ...)
}
Что вы можете использовать просто так:
tmp.install.packages("pkgname")
Пакет установлен во временном каталоге, и его файлы должны быть удалены при следующем перезапуске системы (по крайней мере, в Linux-системах).
Ответ 2
Другим решением этой проблемы является devmode
от devtools
. Devmode позволяет устанавливать пакеты в репозиторий dev, чтобы ваши другие пакеты были не затронуты, если вы устанавливаете версии для разработки. Например:
library(devtools)
devmode()
install_github('ggplot2', 'hadley')
devmode()
Вы заметите, что ваша версия не изменилась.
Ответ 3
pacman
имеет дело с проблемами управления пакетами следующим образом:
library(pacman)
Теперь вы можете использовать:
p_load("pkgname") #installs or loads package if already installed
#at end of session:
p_delete("pkgname") #deletes package from lib
Это быстрый способ установить в свой каталог, а затем удалить его в конце (не совсем временная установка)
Ответ 4
В качестве дополнения к ответу Тайлера функция p_temp
была недавно добавлена в пакет pacman, который делает именно то, что задает вопрос.
library(pacman)
p_temp(pkgname) # or p_temp("pkgname") either work...
Это временно установит пакет и любые зависимости.
Раскрытие информации: Тайлер и я являемся соавторами пакета pacman...