简体   繁体   English

无法使用 Windows 10 在 Rstudio 中编译 rstan 或 Rcpp 代码

[英]Cannot compile rstan or Rcpp code in Rstudio with windows 10

I am not managing to compile Rcpp or rstan code on Windows.我无法在 Windows 上编译Rcpprstan代码。

When I try to compile an rstan program (below) I receive the error当我尝试编译rstan程序(如下)时,我收到错误

Error in compileCode(f, code, language = language, verbose = verbose) : In file included from C:/Users/thean/AppData/Local/Temp/Rtmp0kEsrn/downloaded_packages/rJava_0.9-13.zip/Rcpp/include/RcppCommon.h:29, from C:/Users/thean/AppData/Local/Temp/Rtmp0kEsrn/downloaded_packages/rJava_0.9-13.zip/Rcpp/include/Rcpp.h:27,编译代码中的错误(f,代码,语言 = 语言,详细 = 详细):在 C:/Users/thean/AppData/Local/Temp/Rtmp0kEsrn/downloaded_pa​​ckages/rJava_0.9-13.zip/Rcpp/include/ 中包含的文件中RcppCommon.h:29,来自 C:/Users/thean/AppData/Local/Temp/Rtmp0kEsrn/downloaded_pa​​ckages/rJava_0.9-13.zip/Rcpp/include/Rcpp.h:27,

from file18045ecf22e4.cpp:7:C:/Users/thean/AppData/Local/Temp/Rtmp0kEsrn/downloaded_packages/rJava_0.9-13.zip/Rcpp/include/Rcpp/r/headers.h:71:10: fatal error: Rh: No such file or directory #include <Rh>来自 file18045ecf22e4.cpp:7:C:/Users/thean/AppData/Local/Temp/Rtmp0kEsrn/downloaded_pa​​ckages/rJava_0.9-13.zip/Rcpp/include/Rcpp/r/headers.h:71:10: 致命错误: Rh: 没有这样的文件或目录 #include <Rh>
^~~~~compilation terminated.make: *** [C:/PROGRA~1/R/R-40~1.1/etc/x64/Makeconf:229: file18045ecf22e4.o] Error 1 ^~~~~编译终止.make: *** [C:/PROGRA~1/R/R-40~1.1/etc/x64/Makeconf:229: file18045ecf22e4.o] 错误1

If I try to run the following within Rstudio it redownloads Rtools but it has been already downloaded如果我尝试在Rstudio运行以下内容,它会重新下载 Rtools,但它已被下载

library(Rcpp); evalCpp("2+2") 

And running并运行

Sys.which("make") 
"C:\\rtools40\\usr\\bin\\make.exe" 

Additionally, when I run Sys.which("make") in the command window it just has "" , and not the "C:\\rtools40\\usr\\bin\\make.exe".此外,当我在命令窗口中运行Sys.which("make") ,它只有"" ,而不是 "C:\\rtools40\\usr\\bin\\make.exe"。 When I run library(Rcpp); evalCpp("2+2")当我运行library(Rcpp); evalCpp("2+2") library(Rcpp); evalCpp("2+2") it produces the original error of this tread library(Rcpp); evalCpp("2+2")它产生这个胎面的原始错误


The original question was related to receiving an error when trying to compile an rstan program.最初的问题与尝试编译 rstan 程序时收到错误有关。

I'm using the code below我正在使用下面的代码

library(StanHeaders)

library(rstan) 
values = list(y = rnorm(1000,5,3)) 

model =" 

data { 
real y[1000]; 
} 

parameters { 
real mu; 
real sigma; 
} 

model { 
mu    ~ normal(0,10);   
sigma ~ normal(0,10);  
y     ~ normal(mu,sigma); 
} 
" 

fit <- stan(model_code = model, data = values, warmup = 500, iter = 1000, 
chains = 4, cores = 2, thin = 1) 
posterior = extract(fit) 

I keep getting this error message:我不断收到此错误消息:

Error in compileCode(f, code, language = language, verbose = verbose) : 
  In file included from C:/Users/thean/AppData/Local/Temp/Rtmp0kEsrn/downloaded_packages/rJava_0.9-13.zip/Rcpp/include/RcppCommon.h:29,                 from C:/Users/thean/AppData/Local/Temp/Rtmp0kEsrn/downloaded_packages/rJava_0.9-13.zip/Rcpp/include/Rcpp.h:27,                 
    from file18045ecf22e4.cpp:7:C:/Users/thean/AppData/Local/Temp/Rtmp0kEsrn/downloaded_packages/rJava_0.9-13.zip/Rcpp/include/Rcpp/r/headers.h:71:10: fatal error: R.h: No such file or directory #include <R.h>          ^~~~~compilation terminated.make: *** [C:/PROGRA~1/R/R-40~1.1/etc/x64/Makeconf:229: file18045ecf22e4.o] Error 1

When I go to this directory I don't have Rcpp.h:27 but I do have Rcpp.h.当我进入这个目录时,我没有 Rcpp.h:27 但我有 Rcpp.h。 Its like this on all the files.它在所有文件上都是这样。 Please help.请帮忙。 Thanks谢谢


sessionInfo()

> R version 4.0.1 (2020-06-06) Platform: x86_64-w64-mingw32/x64 (64-bit)
> Running under: Windows 10 x64 (build 18362)
> 
> Matrix products: default
> 
> locale: [1] LC_COLLATE=English_United States.1252 
> LC_CTYPE=English_United States.1252    LC_MONETARY=English_United
> States.1252 [4] LC_NUMERIC=C                          
> LC_TIME=English_United States.1252    
> 
> attached base packages: [1] stats     graphics  grDevices utils    
> datasets  methods   base     
> 
> other attached packages: [1] rstan_2.21.2         ggplot2_3.3.2       
> StanHeaders_2.21.0-6 Rcpp_1.0.5          
> 
> loaded via a namespace (and not attached):  [1] compiler_4.0.1    
> pillar_1.4.6       prettyunits_1.1.1  remotes_2.2.0      tools_4.0.1  
> pkgbuild_1.1.0      [7] jsonlite_1.7.0     lifecycle_0.2.0   
> tibble_3.0.3       gtable_0.3.0       pkgconfig_2.0.3    rlang_0.4.7  
> [13] cli_2.0.2          rstudioapi_0.11    curl_4.3          
> parallel_4.0.1     loo_2.3.1          gridExtra_2.3      [19]
> withr_2.2.0        dplyr_1.0.2        generics_0.0.2     vctrs_0.3.4  
> stats4_4.0.1       grid_4.0.1         [25] tidyselect_1.1.0  
> glue_1.4.2         inline_0.3.15      R6_2.4.1          
> processx_3.4.3     fansi_0.4.1        [31] callr_3.4.3       
> purrr_0.3.4        magrittr_1.5       codetools_0.2-16  
> matrixStats_0.56.0 scales_1.1.1       [37] ps_1.3.4          
> ellipsis_0.3.1     assertthat_0.2.1   colorspace_1.4-1   V8_3.2.0     
> RcppParallel_5.0.2 [43] munsell_0.5.0      crayon_1.3.4

As it wasn't mentionned, it could simply be a path problem.由于没有提到,它可能只是一个路径问题。

Putting Rtools on the PATH将 Rtools 放在 PATH 上

After installation is complete, you need to perform one more step to be able to compile R packages: you need to put the location of the Rtools make utilities (bash, make, etc) on the PATH.安装完成后,您还需要执行一个步骤才能编译 R 包:您需要将 Rtools make 实用程序(bash、make 等)的位置放在 PATH 中。

Try to execute once in R console following command:尝试在 R 控制台中执行一次以下命令:

writeLines('PATH="${RTOOLS40_HOME}\\usr\\bin;${PATH}"', con = "~/.Renviron")

This last step is necessary after Rtools installation .在 Rtools 安装之后,这最后一步是必需的

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM