164

我正在尝试使用 Rpy2 和 ggplot2 但出现错误。网上找了一些报错,发现报错是因为ggplot2包中有一些改动还没有反映到Rpy2中(比如看这个帖子(编辑:链接现在失效了))。

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

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

install.packages没有version论据。我该怎么做?

4

8 回答 8

175

要从源代码(在 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在下面的回答也说明了您可以使用devtools::install_version(). 这也是一个好主意,但也需要在 Windows 上使用 Rtools。

截至 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 之外)安装旧版本:

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

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

于 2013-06-13T08:32:01.843 回答
115

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

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

以前,这个答案指向devtools包,它也重新导出了install_version函数。感谢@MichaelChirico 指出该remotes软件包更可取。

于 2015-04-24T07:07:25.093 回答
7

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

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

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

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

选择你新下载的包压缩文件并安装包

于 2015-12-07T21:25:40.840 回答
6

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

我发现最好的选择是使用install_urlpackage中的函数devtools

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

  1. 从包档案中下载旧的 .tar.gz 源文件。
  2. 按照http://rtm.wustl.edu/writings/htrtargz.pdf上记录的步骤在本地安装它。
于 2013-08-14T21:34:11.087 回答
4

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

“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)
于 2015-12-14T06:20:41.703 回答
4

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_version 功能。但是,您将需要安装该remotes 软件包

于 2019-03-04T21:10:57.063 回答
4

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

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

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

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

包版本和 R 版本的组合当然可能存在兼容性问题。要运行不同的 R 版本,请参见例如此页面

于 2020-07-03T20:39:04.410 回答
2

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

library("groundhog")
groundhog.library("ggplot2", "2012-06-01")
于 2021-02-19T07:30:19.723 回答