安装旧版R包

时间:2013-06-13 08:16:42

标签: r ggplot2 installation version r-faq

我正在尝试使用Rpy2和ggplot2,但是我收到了一个错误。在网上搜索了一些错误之后,我发现错误的发生是因为ggplot2包中的更改尚未反映在Rpy2中(例如,请参阅this post(编辑:链接现已死))。

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

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

但是install.packages does not have a version argument。我该怎么做?

8 个答案:

答案 0 :(得分:127)

从源代码(在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,原因可能是the lack of an appropriate tool chain for building/compiling packages。通常你会从CRAN安装一个预编译的二进制文件,但它们只存档包,而不是二进制文件。 [1] 这意味着你需要安装Rtools所以你可以在本地编译所有东西。 (注意:Rtools is not an R package。)

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

截至2015年9月18日,a new package versions has appeared on 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-09-17(当MRAN启动时)。

要从命令行(R外部)安装旧版本:

一旦在计算机上本地拥有软件包源(“tarball”),您也可以在命令行(终端,命令提示符等)上使用R CMD INSTALL安装软件包,例如使用{{ 1}}(如果你有的话):

wget

或者,如果您使用的是Windows,则使用PowerShell的等价物将是:

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

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

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

(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")

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


[1] 这已不再完全正确。从2016年3月开始,CRAN已开始托管a "CRAN Archive" server,其中包含适用于旧版R(> 5年)的Windows和Mac二进制文件。您现在可以使用R CMD INSTALL ggplot2_0.9.1.tar.gz 直接从此服务器安装。有关详细信息,请参阅新的R FAQ 7.44

答案 1 :(得分:74)

devtools包提供install_version功能,可以直接执行此操作。

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

答案 2 :(得分:5)

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

我找到的最佳替代方法是使用包install_url中的函数devtools

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

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

答案 3 :(得分:4)

您可以从以下链接下载适当的版本作为zip文件。

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

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

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

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

答案 4 :(得分:4)

找到了一个很好的解决方案,对我有用(详情见link)。

命令&#34; repmis&#34;库:

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

答案 5 :(得分:2)

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

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

答案 6 :(得分:0)

install.packages方法

请参见this thread on the r-devel mailing list。在回应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 function。但是,您将需要安装remotes package

答案 7 :(得分:0)

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

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

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

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

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