为什么在 has_devel() = TRUE 之前需要 运行 find_rtools()?
Why do I need to run find_rtools() before has_devel() = TRUE?
我尝试按照 http://adv-r.had.co.nz/Rcpp.html 中的指南来理解 Rcpp
但我总是需要 运行 devtools::find_rtools()
在任何 Rcpp 函数工作之前:
如果我这样做
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 <- 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\"
基本上,您没有将 rtools 安装位置放在系统 PATH
变量上。所以,devtools::find_rtools()
是 scanning the registry and adding it。添加仅对活动会话有效。
现在,devtools::has_devel()
是 very simple build and link of a C++ file。因此,运行 devtools::has_devel()
没有必要的环境(例如有效的 rtools 安装)将导致失败。在这种情况下,环境设置不正确,因为系统 PATH
变量尚未修改。
确保系统路径变量中包含以下内容:
C:\Rtools\bin
和 C:\Rtools\gcc-4.6.3\bin
在干净的 R 会话中检查:
Sys.getenv("PATH")
我尝试按照 http://adv-r.had.co.nz/Rcpp.html 中的指南来理解 Rcpp
但我总是需要 运行 devtools::find_rtools()
在任何 Rcpp 函数工作之前:
如果我这样做
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 <- 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\"
基本上,您没有将 rtools 安装位置放在系统 PATH
变量上。所以,devtools::find_rtools()
是 scanning the registry and adding it。添加仅对活动会话有效。
现在,devtools::has_devel()
是 very simple build and link of a C++ file。因此,运行 devtools::has_devel()
没有必要的环境(例如有效的 rtools 安装)将导致失败。在这种情况下,环境设置不正确,因为系统 PATH
变量尚未修改。
确保系统路径变量中包含以下内容:
C:\Rtools\bin
和 C:\Rtools\gcc-4.6.3\bin
在干净的 R 会话中检查:
Sys.getenv("PATH")