在mac上更新R(并保留包)的不同方法需要澄清

时间:2014-03-09 10:47:06

标签: r updates install.packages

一年多来,我一直害怕更新我的R版本,因为害怕丢失“rgdal”软件包......当我第一次开始在我的Mac上使用R时(可能还是?),必须从源代码安装/无法通过R内部的软件包安装程序安装。这很复杂,我不得不寻求一个比我更有经验的R用户的帮助,以获得对我来说至关重要的软件包。

但我终于决定我需要承担风险并更新R.我使用了以下说明:

#--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)

在这篇文章中找到:

Painless way to install a new version of R?

似乎有效(例如我可以打开未包含在基本安装中的库...包括rgdal)但我有以下问题以便更好地理解这一整体过程:

1)在这种方法中,我基本上保存了我之前在旧版本中安装的所有R软件包的列表,然后(从新版本中)确定了与之不同的软件包的SET新版本中的基础库集合并告诉R安装属于这个SET的软件包?

2)如果上述情况属实,那么这种方法是否会消除更新我的包之后的需要(例如,通过在新版本中安装它们,安装了最新版本)?

3)另一种似乎很常见的方法(在上面的帖子的一个回复中建议)是设置东西,以便所有包保存到R之外的目录然后更改设置(在.Renviron文件或任何适当的文件中)总是在这个外部目录中查找包...我想知道为什么这种方法受到某些人的青睐?是因为这种方法意味着在更新R后,一切都准备就绪(例如,如果有人愿意使用未更新的软件包)?我很困惑,因为如果在安装新版本的R之后仍然需要使用update.packages(),这不仅仅或多或少等于重新安装它们吗?有什么好处?

4)如果我去安装路线(而不是保存到外部目录然后更新路由),是否需要担心包? R确实给了我一个警告,表明我的四个软件包不适用于最新版本(R. 3.0.3)。我假设如果我需要使用这些软件包,我必须暂时恢复到R的旧版本。这一切都正确吗?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

1)是的。

2)新安装的软件包将是最新版本,但之后运行update.packages(ask=FALSE, checkBuilt=TRUE)并没有什么害处,只要确保一切都是最新的。

3)我没有看到有人建议这种特殊的方法,尽管在R for Windows FAQ中建议了一个类似的过程,包括1)安装新版本2)从旧的库文件夹中复制包版本到新版本的库文件夹,2)运行update.packages(checkBuilt=TRUE, ask=FALSE)。我认为这样做与installed.packages() ...方式相比没有任何明显的优势。

4)所讨论的所有方法仅限于CRAN包,因此您不会涵盖从bioconductor安装的内容。从CRAN中删除的软件包也不会被覆盖,您将不得不使用旧版本的R或者手动安装和安装它们。