18

我在为 R 版本 3.5.0 安装 data.table 时遇到问题,建议检查 RTools 是否已正确安装。

安装 RTools 3.5(这似乎是最新的)后,我输入了

find_rtools(T)

我收到以下消息:

WARNING: Rtools is required to build R packages, but no version 
of Rtools compatible with R 3.5.0 was found. 
(Only the following incompatible version(s) of Rtools were found:3.4,3.5)

Please download and install the appropriate version of Rtools from 
http://cran.r-project.org/bin/windows/Rtools/.

所以一方面看起来我确实安装了 3.5,但似乎认为有一个更新/不同的版本。

有什么想法吗?

4

3 回答 3

17

问题Rtools 3.5不在您的 Windows 系统中,PATH因此find_rtools无法找到它。另一种可能性是不兼容的版本RtoolsPATH

安装的最佳实践Rtools

  • 下载最新版本

  • 安装RTools在默认推荐位置(在C驱动器的根目录):C:/Rtools/

  • <重要> 选中允许Rtools修改系统路径的框

在此处输入图像描述 在此处输入图像描述

安装后,我们可以通过在里面运行这个命令来仔细检查R

R> Sys.getenv('PATH')
[1] "C:\\Program Files\\R\\R-3.5.0\\bin\\x64;c:\\Rtools\\bin;c:\\Rtools\\mingw_64\\bin;

另请参阅本指南


编辑:对于那些没有管理权限的人,请参阅以下链接:

于 2018-05-10T17:59:26.507 回答
3

更新

该实用程序find_rtools已移至包pkgbuild中(如devtools 新闻中所述)。该函数在我的系统中pkgbuild::find_rtools()正确发现Rtools3.5。

旧答案

我遇到了同样的问题,它发生是因为devtools尚未更新以考虑最新版本的 RTools (3.5)。这是一个简单的修复程序,在他们更新软件包时应该可以工作:

# add missing RTools 3.5 info
v_i = devtools:::version_info
v_i[["3.5"]] = v_i[["3.4"]]
v_i[["3.5"]]$version_max = "3.5.99"
assignInNamespace(x     = "version_info",
                  value = v_i,
                  ns    = "devtools")

# now find_rtools should work properly
devtools::find_rtools()

当然,这种方法假定devtools::find_rtools在更新 R 和 RTools 之前对您有效。如果不是这种情况,那么您可能有错误的安装和/或其他人提到的 PATH 变量。

于 2018-05-02T12:03:06.050 回答
2

我很确定 RTools 3.5 可以与 R-3.5 一起使用。我以前没有使用过 find_rtools(),但我确实在一周前设法从源代码编译了 data.table。我是这样做的:

安装 R 3.5 和 RTools 3.5 后,我手动检查/修改了以下系统环境(不知何故,RTools 安装程序未能自动执行此操作,因此我通过 RTools 的自述文件并手动执行): BINREF = "C:/Rtools /mingw_$(WIN)/bin/" (带 "s, 斜杠是 /) PATH = ";C:\Rtools\bin" ("s 是可选的,斜杠是 \ )

然后我下载了 data.table 的源包(版本 1.10.4-3)并从 Windows 命令行运行 R CMD INSTALL data.table_1.10.4-3.tar.gz。使用有效的 RTools,该包将成功编译。我还尝试了 R-GUI 中的 install.packages(data.table),在那里我得到了弹出窗口来确认从源代码编译。

无论如何,我相信 cran 现在为 data.table 提供了一个工作 Windows 二进制文件,因此不再需要使用 RTools。

于 2018-05-04T08:54:51.097 回答