无痛的方式来安装新版本的R?

无痛的方式来安装新版本的R?

有没有人有一个很好的技巧来进行升级,从安装软件到复制所有设置/包?

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

#--run in the old version of Rsetwd("C:/Temp/")packages <- installed.packages()[,"Package"]save(packages, file="Rpackages")

在新版本中遵循以下内容:

#--run in the new versionsetwd("C:/Temp/")load("Rpackages")for (p in setdiff(packages, installed.packages()[,"Package"]))install.packages(p)


冉冉说
浏览 668回答 3
3回答

慕沐林林

为了完整起见,有一些方法可以防止您遇到此问题。正如Dirk所说,将包保存在计算机上的另一个目录中。install.packages("thepackage",lib="/path/to/directory/with/libraries")您可以更改默认.Library使用的函数值.libPaths太.libPaths("/path/to/directory/with/libraries")这会将此路径作为.Library变量中的第一个值,并使其成为默认值。如果要进一步自动化,可以在Rprofile.site文件中指定它,您可以在R build的/ etc /目录中找到它。然后每次加载时它都会自动加载,你不必再担心了。您只需从指定目录安装和加载包即可。最后,我的Rprofile.site中包含一些小代码,允许我在安装新R版本时重新安装所有软件包。您只需在更新到新R版本之前列出它们。我使用包含所有包的更新列表的.RData文件。library(utils)##&nbsp;Check&nbsp;necessary&nbsp;packagesload("G:\Setinfo\R\packagelist.RData")&nbsp;#&nbsp;includes&nbsp;a&nbsp;vector&nbsp;"pkgs"installed&nbsp;<-&nbsp;pkgs&nbsp;%in%&nbsp;installed.packages()[,&nbsp;'Package']if&nbsp;(length(pkgs[!installed])&nbsp;>=1){ &nbsp;&nbsp;install.packages(pkgs[!installed])}我通过.Last()在我的Rprofile.site中指定来创建packagelist.RData&nbsp;。如果我安装了一些,则更新包列表:.Last&nbsp;<-&nbsp;function(){ &nbsp;&nbsp;pkgs&nbsp;<-&nbsp;installed.packages()[,1] &nbsp;&nbsp;if&nbsp;(length(pkgs)&nbsp;>&nbsp;length(installed)){ &nbsp;&nbsp;&nbsp;&nbsp;save(pkgs,file="G:\Setinfo\R\packagelist.RData") &nbsp;&nbsp;}}当我安装新的R版本时,我只需将必要的元素添加到Rprofile.site文件中,然后重新安装所有软件包。无论如何我必须调整Rprofile.site(使用和比,为Tinn-R添加额外的代码,这些东西),所以这不是真正的额外工作。它只需要额外的时间来重新安装所有包。最后一位相当于原始问题中给出的解决方案。我不需要担心首先获得“已安装”列表。同样,如果您的软件包未从CRAN安装,则无法完美运行。但是这个代码很容易扩展,包括那些代码。

慕田峪7331174

如果你有先见之明,接受的答案可能会有效,但我已经摆脱了旧版本,因此无法遵循这些指示。下面描述的步骤适用于从2.1和3.1升级的OSX。更新:要获取最新版本的目录(而不是键入3.1或3.2),您可以使用以下命令。第二个直接转换为R变量,跳过.和,..并.DS_Store使用:OLD=$(ls&nbsp;-d&nbsp;/Library/Frameworks/R.framework/Versions/*.*&nbsp;|tail&nbsp;-n&nbsp;2&nbsp;|&nbsp;head&nbsp;-n&nbsp;1)Resources/library/echo&nbsp;"packages&nbsp;=&nbsp;c(\"`ls&nbsp;$OLD&nbsp;|&nbsp;tail&nbsp;+4|&nbsp;paste&nbsp;-s&nbsp;-d&nbsp;','&nbsp;-&nbsp;|&nbsp;sed&nbsp;-E&nbsp;'s|,|\",\"|'g`\")"&nbsp;|&nbsp;tr&nbsp;-d&nbsp;"/"(添加|pbcopy到最后将其直接复制到Mac剪贴板)然后在R中,您可以粘贴生成的变量。一旦在新版本的R中定义了它,您就可以按照上面的说明遍历已安装的软件包......for&nbsp;(p&nbsp;in&nbsp;setdiff(packages,&nbsp;installed.packages()[,"Package"])) &nbsp;&nbsp;&nbsp;install.packages(p,&nbsp;dependencies=TRUE,&nbsp;quiet=TRUE,&nbsp;ask=FALSE)
打开App,查看更多内容
随时随地看视频慕课网APP