有时候在Stack Overflow上,有一个问题与我的系统上没有安装的软件包相关,我不打算稍后重复使用。
如果我使用install.packages()
安装软件包,它将被放入我的一个R安装库中,然后将占用一些存储空间并在每次运行update.packages()
时进行更新。
有没有办法只为当前的R会话安装包?
答案 0 :(得分:23)
您可以使用以下功能临时安装软件包:
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系统上)。
答案 1 :(得分:9)
此问题的另一个解决方案是来自devmode
的{{1}}。 Devmode允许您将软件包安装到dev存储库,以便在安装开发版本时不会触及其他软件包。例如:
devtools
您会注意到您的版本没有更改。
答案 2 :(得分: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
这是一种在您的目录中安装然后在最后删除它的快速方法(不是真正的临时安装)
答案 3 :(得分:4)
作为Tyler答案的补充,最近在 pacman 包中添加了p_temp
功能,该功能完全符合问题的要求。
library(pacman)
p_temp(pkgname) # or p_temp("pkgname") either work...
这将暂时安装软件包和任何依赖项。
披露:Tyler和我是 pacman 包的共同作者......