首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >轻松安装新版本的R?

轻松安装新版本的R?
EN

Stack Overflow用户
提问于 2009-09-09 20:29:12
回答 12查看 63.2K关注 0票数 166

Andrew Gelman recently lamented the lack of an easy upgrade process for R (在Windows上可能比Linux更相关)。有没有人有好的升级技巧,从安装软件到复制所有的设置/包?

这个建议包含在评论中,也是我最近一直在使用的。首先安装新版本,然后在旧版本中运行以下命令:

代码语言:javascript
复制
#--run in the old version of R
setwd("C:/Temp/")
packages <- installed.packages()[,"Package"]
save(packages, file="Rpackages")

在新版本中如下所示:

代码语言:javascript
复制
#--run in the new version
setwd("C:/Temp/")
load("Rpackages")
for (p in setdiff(packages, installed.packages()[,"Package"]))
install.packages(p)
EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2010-10-20 19:16:01

为了完整起见,有一些方法可以防止你遇到这个问题。正如Dirk所说,将包保存在计算机上的另一个目录中。

代码语言:javascript
复制
install.packages("thepackage",lib="/path/to/directory/with/libraries")

您也可以使用函数.libPaths更改缺省的.Library

代码语言:javascript
复制
.libPaths("/path/to/directory/with/libraries")

这会将此路径作为.Library变量中的第一个值,并将其设置为默认值。

如果希望进一步实现自动化,可以在Rprofile.site文件中指定,该文件位于R构建的/etc/目录中。然后,它将在每次加载R时自动加载,您不必再担心这一点。您可以只从指定的目录安装和加载包。

最后,我在Rprofile.site中包含了一些小代码,允许我在安装新的R版本时重新安装所有包。您只需在更新到新的R版本之前将它们列在上。我使用一个包含所有包的更新列表的.RData文件来完成此操作。

代码语言:javascript
复制
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。如果我安装了以下内容,这将更新软件包列表:

代码语言:javascript
复制
.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安装的包,这也不是完美的。但是这段代码也可以很容易地扩展以包含这些内容。

票数 76
EN

Stack Overflow用户

发布于 2014-04-10 21:11:56

如果您使用的是Windows,则可能需要使用installr包:

代码语言:javascript
复制
install.packages("installr")
require(installr)
updateR()

执行此操作的最佳方法是从RGui系统。所有的包都将被转移到新的文件夹中,旧的包将被删除或保存(你可以选择其中之一)。然后,一旦您再次打开RStudio,它会立即识别您使用的是更新版本。对我来说,这就像是一种魔力。

More info on here

票数 43
EN

Stack Overflow用户

发布于 2009-09-09 21:05:42

两个快速建议:

  1. 使用Gabor的batchfiles,据说它包含了一些工具,例如帮助进行批量库重新定位的工具。注意:我还没有使用过它们。
  2. 不要在已安装的R版本的'filetree‘中安装库。在Windows上,我可能会将R放入C:/opt/R/R-$version,但使用以下代码片段将所有库放入C:/opt/R/library/,因为它首先减轻了问题:

代码语言:javascript
复制
$ cat .Renviron         # this is using MSys/MinGW which looks like Cygwin  
## Example .Renviron on Windows    
R_LIBS="C:/opt/R/library"
票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1401904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档