安装旧版本的R软件包


134

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

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

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

但是install.packages没有version争论。我该怎么做?


Answers:


150

要从源代码安装旧版本的软件包(在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-09-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")

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

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

R CMD INSTALL ggplot2_0.9.1.tar.gz

这应该可以在任何平台上工作(与上面相同的警告-关于需要用于构建软件包的工具链)。


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


4
谢谢,我想这是正确的方法。我现在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
Rcpp也有类似的问题。这可能是由于软件包的R版本依赖性(DEPENDS:<版本>)引起的,或者可能是由于正在运行的R会话不允许您执行更新。我发现对我有用的是按照Mark Butler(如下)建议的方式进行更新(R CMD INSTALL your_version.tar.gz)。在我的情况下,这是针对R 2.15.3的。
罗伯·凯西

@Antoine您在Windows上吗?而且,如果是这样,您是否安装了Rtools?
托马斯

@Thomas感谢您的回复。是的,我在带有“伪装” Rtools的Windows上看到此线程
Antoine 2015年

@Thomas我将尝试在Amazon EC2上运行我的脚本,以避免机器上明显的本地问题(库路径,R版本与软件包版本,编译问题等)
Antoine

87

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

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

以前,此答案指向devtools软件包,该软件包还会重新导出该install_version功能。感谢@MichaelChirico指出该remotes软件包是可取的。


您可以保留一个软件包的多个版本,而不必install_version每次都希望加载特定版本吗?说,library(ggplot2-0.9.1)
PatrickT

1
@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
您还可以在运行install_version之前使用.libPaths(“ / dir_for_custom_library_versions”)
tjjjohnson

1
现在我认为remotes::install_version是可取的,因为remotes是一个更轻量级的封装尺寸比devtoolsdevtools::install_version仅仅是一个再出口remotes::install_version
MichaelChirico

5

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

我发现最好的替代方法是使用install_urlpackage中的function devtools

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

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

这对我不起作用,请关注我的问题stackoverflow.com/q/22673474/684229以获取详细信息。
TMS

+1,该R CMD INSTALL命令也适用于Ubuntu。谢谢!!
Phani 2014年


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)

1

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 软件包


0

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

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

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.