22

有时在 Stack Overflow 上,有一个与我的系统上未安装的软件包相关的问题,并且我不打算以后重用。

如果我使用 安装包install.packages(),它将被放入我的 R 安装库之一,然后会占用一些存储空间并在每次运行时更新update.packages()

有没有办法只为当前的 R 会话安装包?

4

4 回答 4

24

您可以使用以下功能临时安装软件包:

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 系统上)。

于 2013-02-15T14:34:28.377 回答
10

这个问题的另一个解决方案是devmodedevtools. Devmode 允许您将软件包安装到开发存储库,因此如果您安装开发版本,您的其他软件包不会受到影响。例如:

library(devtools)
devmode()
install_github('ggplot2', 'hadley')
devmode()

您会注意到您的版本没有更改。

于 2013-02-15T14:58:04.723 回答
8

pacman处理这样的包管理问题:

library(pacman)

现在您可以使用:

p_load("pkgname")   #installs or loads package if already installed
#at end of session:
p_delete("pkgname") #deletes package from lib

这是在您的目录中安装然后在最后删除它的快速方法(不是真正的临时安装)

于 2013-02-15T15:04:37.200 回答
4

作为 Tyler 回答的p_temp补充,最近在pacman包中添加了一个功能,该功能完全符合问题的要求。

library(pacman)
p_temp(pkgname) # or p_temp("pkgname") either work...

这将临时安装包和任何依赖项。

披露:泰勒和我是pacman软件包的共同作者......

于 2013-03-24T03:56:50.700 回答