Подтвердить что ты не робот

Временно установите пакет R, только для текущего сеанса

Иногда при переполнении стека возникает вопрос относительно пакета, который не установлен в моей системе и который я не планирую повторно использовать позже.

Если я установлю пакет с помощью install.packages(), он будет помещен в одну из моих R-инсталляционных библиотек, а затем будет занимать некоторое пространство для хранения и обновляться каждый раз при запуске update.packages().

Есть ли способ установить пакет только для текущего сеанса R?

4b9b3361

Ответ 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...