我尝试按照http://adv-r.had.co.nz/Rcpp.html中的指南来理解Rcpp
但我总是需要在任何Rcpp函数工作之前运行devtools::find_rtools()
:
如果我做
library(devtools)
library(Rcpp)
has_devel() # Error: Command failed(1)
# Example from http://adv-r.had.co.nz/Rcpp.html
add <- cppFunction('int add(int x, int y, int z) {
int sum = x + y + z;
return sum;
}')
我收到错误,Rstudio提示我安装其他构建工具(但是当我说是的时候没有任何反应)。看起来某些make命令失败,但是system("where make")
给出了我的PATH中的路径。
然后当我做
find_rtools() # True
has_devel() # True
# Try the example again
add <- cppFunction('int add(int x, int y, int z) {
int sum = x + y + z;
return sum;
}')
# Now works
add(1,2,3) # 6
devtools和Rcpp似乎都很开心。为什么这样,我该如何解决?
这是我的PATH
的开头path <- get_path()
head(path, 8)
[1] "F:\\Software\\R-3.3.0\\bin\\x64"
"F:\\Software\\Rtools\\bin"
[3] "F:\\Software\\Rtools\\gcc-4.6.3\\bin"
"F:\\Software\\Python 3\\Scripts\\"
[5] "F:\\Software\\Python 3\\"
"F:\\Software\\Rtools\\bin"
[7] "F:\\Software\\Rtools\\gcc-4.6.3\\bin"
"C:\\Program Files (x86)\\Intel\\iCLS Client\\"
答案 0 :(得分:2)
基本上,您没有将rtools安装位置放在系统PATH
变量上。因此,devtools::find_rtools()
是scanning the registry and adding it。添加仅对活动会话有效。
现在,devtools::has_devel()
是very simple build and link of a C++ file。因此,在没有必要环境(例如有效的rtools安装)的情况下运行devtools::has_devel()
将导致失败。在这种情况下,由于系统PATH
变量尚未修改,因此环境设置不正确。
确保系统路径变量中包含以下内容:
C:\Rtools\bin
和C:\Rtools\gcc-4.6.3\bin
在干净的R会话中检查:
Sys.getenv("PATH")