安装旧版本的 R 包

Installing older version of R package

提问人:hirolau 提问时间:6/13/2013 最后编辑:David Arenburghirolau 更新时间:3/22/2023 访问量:187435

问:

我正在尝试使用 Rpy2 和 ggplot2,但出现错误。在网上搜索错误后,我发现发生错误是因为 ggplot2 包中有一些更改尚未反映在 Rpy2 中(例如,请参阅此帖子(编辑:链接现已失效))。

所以我现在需要安装旧版本的 ggplot2。这是我想要的伪代码:

install.packages("ggplot2", version='0.9.1')

但是 install.packages 没有 version 参数。我该怎么做?

安装 版本 R-FAQ

评论

0赞 isomorphismes 2/13/2014
尝试?stackoverflow.com/questions/16503554/......checkBuilt

答:

215赞 Thomas 6/13/2013 #1

若要从源代码(在 R 中)安装较旧版本的包,请执行以下操作:

packageurl <- "http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz"
install.packages(packageurl, repos=NULL, type="source")

如果这对您不起作用,并且您使用的是 Windows,原因可能是缺乏用于构建/编译包的适当工具链。通常,您会从 CRAN 安装预编译的二进制文件,但它们只存档包,而不是二进制文件。[1] 这意味着您需要安装 Rtools,以便您可以在本地编译所有内容。(注意:Rtools 不是 R 包

@shadow下面的回答也说明了您可以使用 .这也是一个好主意,但也需要在 Windows 上使用 Rtools。devtools::install_version()

截至 2015 年 9 月 18 日,CRAN 上出现了新的软件包版本。这依赖于 Revolution Analytics MRAN 服务器来安装特定版本或日期的软件包:

# install yesterday's version of checkpoint, by date
install.dates('checkpoint', Sys.Date() - 1)

# install earlier versions of checkpoint and devtools
install.versions(c('checkpoint', 'devtools'), c('0.3.3', '1.6.1'))

这样做的好处是不需要 Rtools 在 Windows 上安装二进制包,但只能追溯到 2014 年 9 月 17 日(MRAN 启动时)。

若要从命令行(在 R 外部)安装旧版本,请执行以下操作:

一旦你的机器上本地有了包源(“tarball”),你也可以在命令行(终端、命令提示符等)上使用来安装包,例如使用(如果你有的话):R CMD INSTALLwget

wget http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz

或者,如果你使用的是 Windows,则使用 PowerShell 的等效项为:

(new-object System.Net.WebClient).DownloadFile("http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz", "./ggplot2_0.9.1.tar.gz")

或者您可以通过网络浏览器从 CRAN 存档下载源代码。

要从本地文件安装,您可以执行以下操作:

R CMD INSTALL ggplot2_0.9.1.tar.gz

这应该适用于任何平台(与上面相同的警告 - 关于需要一个工具链来构建包)。


[1]这已不完全正确。从 2016 年 3 月开始,CRAN 开始托管“CRAN 存档”服务器,其中包含非常旧版本的 R(> 5 年)的 Windows 和 Mac 二进制文件。您现在可以使用 install.packages() 直接从此服务器安装。有关详细信息,请参阅新的 R 常见问题解答 7.44

评论

4赞 hirolau 6/13/2013
谢谢,我想这是正确的方法。太糟糕了,我现在得到:Warning message: package ‘http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz’ is not available (for R version 2.15.2)
3赞 Robert Casey 1/17/2014
Rcpp 也有类似的问题。这可能是由于包的 R 版本依赖关系 (DEPENDS: <version>) ,也可能是正在运行的 R 会话不允许你执行更新。我发现对我有用的是按照 Mark Butler(下图)建议的方式进行更新(R CMD INSTALL your_version.tar.gz)。就我而言,这是针对 R 2.15.3 的。
0赞 Thomas 7/16/2015
@Antoine 您使用的是 Windows 吗?如果是这样,您是否安装了 Rtools?
0赞 Antoine 7/16/2015
@Thomas 感谢您的回复。是的,我在 Windows 上使用 Rtools“伪安装”,请参阅此线程
3赞 eric_kernfeld 8/11/2023
我非常遗憾地说,由于MRAN的退休,现在必须更新这个答案。techcommunity.microsoft.com/t5/azure-sql-blog/......
5赞 asieira 8/15/2013 #2

按照另一个答案中的说明使用对我不起作用。install.packages

我发现的最好的选择是使用包中的函数。install_urldevtools

我没有进一步探讨的另一种可能性:

  1. 从包存档中下载较旧的 .tar.gz 源文件。
  2. 按照 http://rtm.wustl.edu/writings/htrtargz.pdf 上记录的步骤在本地安装它。

评论

0赞 Tomas 3/27/2014
这对我不起作用,请按照我的问题 stackoverflow.com/q/22673474/684229 了解详情。
0赞 Phani 5/13/2014
+1,该命令也适用于 Ubuntu。谢谢!!R CMD INSTALL
152赞 shadow 4/24/2015 #3

该软件包提供了一个可以直接执行此操作的功能。remotesinstall_version

require(remotes)
install_version("ggplot2", version = "0.9.1", repos = "http://cran.us.r-project.org")

以前,此答案指向包,该包也重新导出了该函数。感谢@MichaelChirico指出该软件包更可取。devtoolsinstall_versionremotes

评论

1赞 PatrickT 11/10/2018
您可以保留同一包的多个版本,而不必每次都加载特定版本吗?说install_versionlibrary(ggplot2-0.9.1)
2赞 shadow 11/10/2018
@PatrickT 您可以使用本地库来执行此操作。例如和install_version('ggplot2', version = 0.9.1, lib = 'path_to_library_with_ggplot_0.9.1')library(ggplot2, lib.loc = 'path_to_library_with_ggplot_0.9.1')
1赞 tjjjohnson 11/27/2018
您也可以在运行之前使用 .libPaths(“/dir_for_custom_library_versions”) install_version
8赞 user23899 12/8/2015 #4

您可以从下面的链接以 zip 文件的形式下载相应的版本。

http://cran.r-project.org/src/contrib/Archive/ggplot2/

在 R Studio 中: 工具 >> 安装包 >> 安装自:(选择下拉列表)

包存档文件(.zip,.tar.gz)。

选择新下载的 package-zip-file 并安装软件包

4赞 Aybek Khodiev 12/14/2015 #5

找到了一个很好的解决方案,对我有用(详细信息在链接中)。

“repmis”库中的命令:

# Install old versions of the e1071 and gtools packages.

# Create vectors of the package names and versions to install
# Note the names and version numbers must be in the same order
Names <- c("e1071", "gtools")
Vers <- c("1.6", "2.6.1")

# Install old package versions into the default library
InstallOldPackages(pkgs = Names, versions = Vers)
12赞 Daniel Himmelstein 3/5/2019 #6

纯法install.packages

请参阅 r-devel 邮件列表上的此主题。在回复 Kurt Wheeler 时,Kurt Hornik 透露了 CRAN 网站的一个未记录的功能,用于指定软件包的特定版本。

只要你已经安装了所有必需的依赖项,这个方法就会起作用:

package = "https://cran.r-project.org/package=svglite&version=1.2.1"
utils::install.packages(pkgs = package, repos = NULL)

请注意上面的 URL 结构。这解决了最新版本的 CRAN 与存档版本的 URL 结构不同的问题:

# Latest version (not available at Archive/svglite)
https://cran.r-project.org/src/contrib/svglite_1.2.1.tar.gz
# Archived version
https://cran.r-project.org/src/contrib/Archive/svglite/svglite_1.2.0.tar.gz

remotes::install_version方法

另一种选择是使用该函数。但是,您将需要安装该软件包remotes::install_versionremotes

评论

0赞 LMc 3/8/2023
线程链接不起作用。
1赞 Daniel Himmelstein 3/22/2023
感谢@LMc的通知。将 URL 更新为 stat.ethz.ch/pipermail/r-devel/2018-October/076989.html
5赞 EdM 7/4/2020 #7

对于自 2014 年 9 月 17 日以来发布的软件包版本,有一个版本可以大大简化此任务。它使用 Revolution Analytics 的 MRAN 服务器快照来:

  • 显示任何 CRAN 软件包的发布日期和 MRAN 可用性 (),available.versions

  • 安装一个或多个 packages() 的指定版本,或者install.versions

  • 安装自任何指定日期 () 起可用的软件包版本。它通过标准功能从 MRAN 服务器进行安装,因此可以安装可用的二进制版本,而不必从源代码编译,并且可以包含截至指定日期的包依赖项。install.datesinstall.packages

当然,包版本和 R 版本的组合可能存在兼容性问题。有关运行不同 R 版本的信息,请参阅此页面

4赞 TimTeaFan 2/19/2021 #8

另一种选择是 {groundhog} 包。它通过指定日期来帮助从 CRAN 安装较旧的软件包版本。当人们不记得特定的包版本,而是记住脚本仍在工作的时间时,这尤其有用。在{ggplot2}的情况下,版本0.9.1于2012年5月加载到CRAN上,因此我们可以从6月开始计算日期。

library("groundhog")
groundhog.library("ggplot2", "2012-06-01")