安装旧版R包

hir*_*lau 117 installation r version ggplot2 r-faq

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

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

install.packages("ggplot2", version='0.9.1')
Run Code Online (Sandbox Code Playgroud)

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

Tho*_*mas 136

要从源代码安装旧版本的软件包(在R中):

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

如果这对您不起作用并且您在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'))
Run Code Online (Sandbox Code Playgroud)

这样做的好处是不需要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
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用的是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")
Run Code Online (Sandbox Code Playgroud)

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

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

R CMD INSTALL ggplot2_0.9.1.tar.gz
Run Code Online (Sandbox Code Playgroud)

这应该可以在任何平台上工作(与上面相同 - 需要一个工具链来构建包).


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

  • 谢谢,我想这是正确的方法.太糟糕了我现在得到:`警告信息:包'http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz'不可用(对于R版本2.15.2) )` (4认同)
  • 与Rcpp有类似的问题.这可能是由于程序包的R版本依赖性(DEPENDS:<version>),或者可能是正在运行的R会话不允许您执行更新.我发现对我有用的是以Mark Butler(下面)建议的方式进行更新(R CMD INSTALL your_version.tar.gz).在我的情况下,这是R 2.15.3. (3认同)
  • 我很遗憾地说,由于 MRAN 的退役,这个答案现在必须更新。https://techcommunity.microsoft.com/t5/azure-sql-blog/microsoft-r-application-network-retirement/ba-p/3707161 (3认同)

sha*_*dow 78

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

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

  • @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')` (2认同)

Dan*_*ein 13

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)
Run Code Online (Sandbox Code Playgroud)

请注意上面的 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
Run Code Online (Sandbox Code Playgroud)

remotes::install_version方法

另一种选择是使用该remotes::install_version 功能。但是,您需要安装该remotes 软件包


小智 8

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

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

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

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

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


小智 7

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

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

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

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

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


Tim*_*Fan 6

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

library("groundhog")
groundhog.library("ggplot2", "2012-06-01")
Run Code Online (Sandbox Code Playgroud)


asi*_*ira 5

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

我找到的最好的选择是使用install_url包中的函数devtools.

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

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


Ayb*_*iev 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)
Run Code Online (Sandbox Code Playgroud)