Andrew Gelman recently lamented the lack of an easy upgrade process for R (在Windows上可能比Linux更相关)。有没有人有好的升级技巧,从安装软件到复制所有的设置/包?
这个建议包含在评论中,也是我最近一直在使用的。首先安装新版本,然后在旧版本中运行以下命令:
#--run in the old version of R
setwd("C:/Temp/")
packages <- installed.packages()[,"Package"]
save(packages, file="Rpackages")在新版本中如下所示:
#--run in the new version
setwd("C:/Temp/")
load("Rpackages")
for (p in setdiff(packages, installed.packages()[,"Package"]))
install.packages(p)发布于 2010-10-20 19:16:01
为了完整起见,有一些方法可以防止你遇到这个问题。正如Dirk所说,将包保存在计算机上的另一个目录中。
install.packages("thepackage",lib="/path/to/directory/with/libraries")您也可以使用函数.libPaths更改缺省的.Library值
.libPaths("/path/to/directory/with/libraries")这会将此路径作为.Library变量中的第一个值,并将其设置为默认值。
如果希望进一步实现自动化,可以在Rprofile.site文件中指定,该文件位于R构建的/etc/目录中。然后,它将在每次加载R时自动加载,您不必再担心这一点。您可以只从指定的目录安装和加载包。
最后,我在Rprofile.site中包含了一些小代码,允许我在安装新的R版本时重新安装所有包。您只需在更新到新的R版本之前将它们列在上。我使用一个包含所有包的更新列表的.RData文件来完成此操作。
library(utils)
## Check necessary packages
load("G:\Setinfo\R\packagelist.RData") # includes a vector "pkgs"
installed <- pkgs %in% installed.packages()[, 'Package']
if (length(pkgs[!installed]) >=1){
install.packages(pkgs[!installed])
}我通过在Rprofile.site中指定.Last()来创建packagelist.RData。如果我安装了以下内容,这将更新软件包列表:
.Last <- function(){
pkgs <- installed.packages()[,1]
if (length(pkgs) > length(installed)){
save(pkgs,file="G:\Setinfo\R\packagelist.RData")
}
}当我安装一个新的R版本时,我只需将必要的元素添加到Rprofile.site文件中,所有的包都会被重新安装。我无论如何都要调整Rprofile.site (使用sum对比度,为Tinn-R添加额外的代码,这些事情),所以这并不是真正的额外工作。这只是需要额外的时间重新安装所有的软件包。
这最后一点等同于原始问题中作为解决方案给出的内容。我只是不需要担心先得到“已安装”列表。
同样,如果您有不是从CRAN安装的包,这也不是完美的。但是这段代码也可以很容易地扩展以包含这些内容。
发布于 2014-04-10 21:11:56
如果您使用的是Windows,则可能需要使用installr包:
install.packages("installr")
require(installr)
updateR()执行此操作的最佳方法是从RGui系统。所有的包都将被转移到新的文件夹中,旧的包将被删除或保存(你可以选择其中之一)。然后,一旦您再次打开RStudio,它会立即识别您使用的是更新版本。对我来说,这就像是一种魔力。
More info on here。
发布于 2009-09-09 21:05:42
两个快速建议:
$ cat .Renviron # this is using MSys/MinGW which looks like Cygwin
## Example .Renviron on Windows
R_LIBS="C:/opt/R/library"https://stackoverflow.com/questions/1401904
复制相似问题