[英]Installing older version of R package
我正在尝试使用 Rpy2 和 ggplot2 但出现错误。 在网上搜索了一些错误后,发现错误是因为 ggplot2 package 中的更改尚未反映在 Rpy2 中(例如,看到这个帖子(编辑:链接现在已死))。
所以我现在需要安装旧版本的 ggplot2。 这是我想要的伪代码:
install.packages("ggplot2", version='0.9.1')
但是install.packages
没有version
参数。 我该怎么做?
要从源代码(在 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
软件包,例如使用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 Archive”服务器,其中包含适用于非常旧版本的 R(> 5 年)的 Windows 和 Mac 二进制文件。 您现在可以使用install.packages()
直接从该服务器安装。 有关详细信息,请参阅新的R 常见问题解答 7.44 。
remotes
包提供了一个install_version
函数,可以直接执行此操作。
require(remotes)
install_version("ggplot2", version = "0.9.1", repos = "http://cran.us.r-project.org")
以前,这个答案指向了devtools
包,它也重新导出了install_version
函数。 感谢 @MichaelChirico 指出remotes
包更可取。
您可以从下面的链接以 zip 文件的形式下载合适的版本。
http://cran.r-project.org/src/contrib/Archive/ggplot2/
在 R Studio 中:工具 >> 安装包 >> 安装自:(选择下拉菜单)
包存档文件(.zip、.tar.gz)。
选择您新下载的包压缩文件并安装包
使用另一个答案中描述的install.packages
对我不起作用。
我发现的最佳替代方法是使用devtools
包中的install_url
函数。
我还没有进一步探讨的另一种可能性:
找到了一个很好的解决方案,它对我有用(详细信息在链接中)。
“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)
对于自 2014 年 9 月 17 日以来发布的包版本,有一个versions
包可以大大简化此任务。 它使用 Revolution Analytics 中 MRAN 服务器的快照来:
显示任何 CRAN 包的发布日期和 MRAN 可用性( available.versions
),
安装一个或多个软件包的指定版本( install.versions
),或
安装在任何指定日期 ( install.dates
) 可用的软件包版本。 它通过标准的install.packages
函数从 MRAN 服务器进行安装,因此可以安装可用的二进制版本而不必从源代码编译,并且可以包含指定日期的包依赖项。
当然,包版本和 R 版本的组合可能存在兼容性问题。 要运行不同的 R 版本,请参阅此页面的示例。
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
方法另一种选择是 {groundhog} 包。 它通过指定日期来帮助从 CRAN 安装较旧的软件包版本。 当人们不记得特定的包版本,而记得脚本仍在工作的时间时,这尤其有用。 如果 {ggplot2} 版本 0.9.1 于 2012 年 5 月在 CRAN 上加载,因此我们可以从 6 月开始计算。
library("groundhog")
groundhog.library("ggplot2", "2012-06-01")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.