3
votes

I am not managing to compile Rcpp or rstan code on Windows.

When I try to compile an rstan program (below) I receive the error

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

If I try to run the following within Rstudio it redownloads Rtools but it has been already downloaded

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". When I run library(Rcpp); evalCpp("2+2") it produces the original error of this tread


The original question was related to receiving an error when trying to compile an rstan program.

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. 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
1
Did you install rtools? - user20650
27 refers to the line number in Rcpp.h referenced in the error printed. @user20650 's point is probably where you need to focus, though (rtools) - duckmayr
Welcome to Stack Overflow. If you are using R 4.x install RTools from here: cran.r-project.org/bin/windows/Rtools. If you are still using R 3.x you will want probably want Rtools35.exe which you can get from cran.r-project.org/bin/windows/Rtools/history.html - itsMeInMiami
Rtools 4.0 is added and I'm using Rstudio not R and I'm still getting the same error message. - Jon Burks Jr
@JonBurksJr; can you confirm that you set the path to Rtools. Can you confirm that library(Rcpp); evalCpp("2+2") evaluates please. - user20650

1 Answers

0
votes

As it wasn't mentionned, it could simply be a path problem.

Putting Rtools on the 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.

Try to execute once in R console following command:

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

This last step is necessary after Rtools installation.