【发布时间】:2016-02-08 15:41:09
【问题描述】:
我正在尝试按照此网页上的说明在 Windows 中链接 R 和 C
http://mcglinn.web.unc.edu/blog/linking-c-with-r-in-windows/
我有 R、RTOOLS 和 TurboC4 都在 C 盘的不同文件夹中。我的系统是 64 位的,但我在 32 位和 64 位 R 上都试过了。
我用 C 编写了以下代码
#include <R.h>
void hello(int *n)
{ int i;
for(i=0; i<=*n; i++){
Rprintf("hello, world!this is hell though I'm enjoying it\n");
}
}
并以 WORLD.C 名称保存在单独的文件中,其路径为 C:\TurboC4\TC\BIN
我也写了下面的R代码
hello2 <- function(n) {
.C("hello", as.integer(n))
}
hello2(5)
并用名称 WORLD.R. 保存它
现在我必须准备我的窗户。我已经从这里下载了 RTools33.exe https://cran.r-project.org/bin/windows/Rtools/
并通过该命令手动设置环境变量
PATH=c:\Rtools\bin;c:\Rtools\gcc-4.6.3\bin;c:\Program Files\R\R-3.2.2\bin\i386;
然后重装系统
在 R 中调用 C 代码之前,我必须在 cmd 中编译 C 代码。我编写以下命令来更改保存 WORLD.C 的目录
cd C:\Users\TurboC4\TC\BIN
这是成功的,但是当我尝试编译时
C:\Users\TurboC4\TC\BIN> R CMD SHLIB WORLD.c
我收到以下错误。 “'R' 未被识别为内部或外部命令,可操作”。我也尝试在 C 中编译 WORLD.C 并得到这两个错误。 “无法打开 #include R.h>”和“函数 Rprintf 应该有原型”。
设置环境是个问题 我认为这是我面临问题的地方。我检查了 Rtools33.exe 是否与 R 3.2.x 及更高版本兼容。但是我在 CMD 上遇到了同样的错误。我尝试了不同的路径环境,并尝试了不同的 R 版本,如 R-3.2.2、R-3.2.0、2.15.3、2.15.0。但是当我写
"install.packages("RTools33") 在任何这些 R 版本中,我收到以下警告消息
Warning in install.packages :package ‘RTools33’ is not available (for R version
2.15.0)"
使用不同 Rs 的原因是当您下载 RTOOLS 文件夹时,有一个版本文件显示“Rtools Collection 3.3.0.1959”。所以我认为这可能是一个兼容性问题。
Github 页面上有一些说明 https://github.com/stan-dev/rstan/wiki/Install-Rtools-for-Windows “安装Rtools需要注意一个步骤,我们可以编辑系统PATH,这样Rtools中包含的C++编译器就可以被R使用。如下图所示,我们需要勾选这个选项(无需手动编辑系统 PATH。选中该选项后,系统 PATH 将被编辑以包含安装过程中 Rtools 的重要文件夹。"
所以,我已经卸载了 RTools,并且在重新安装时我也检查了此选项按钮,然后重试,但一切正常。
我检查了 Sys.getenv('PATH') 并得到了
c:\\\\\\\\Rtools\\\\\\\\gcc-4.6.3\\\\\\\\bin;c:\\\\\\\\RTools\\\\\\\\bin;
我也尝试过设置这个路径
控制面板->用户帐户和家庭安全->用户帐户->更改我的
环境变量
然后使用上面的 PATH 创建新变量。
我仍然无法将 R 定向到 C++ 编译器。谁能弄清楚我的错误是什么?
【问题讨论】: