Hvordan får man Rcpp til at arbejde i R på en Windows XP-platform?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har forsøgt at arbejde med Rcpp i R 2.14.2 på en Windows XP-platform. Så vidt jeg kan fortælle, fulgte jeg alle de anbefalede trin for at få Rcpp til at fungere:



  1. Jeg installerede R i en mappe kaldet C: \ R \ R-2.14.2;

  2. Jeg installerede den nyeste version af Rtools i mappen C: \ R \ Rtools;

  3. Jeg stiller miljøet PATH til følgende (i nøjagtig samme rækkefølge):




  C: \ r \ Rtools \ bin; C: \ r \ Rtools \ gcc-4.6.3 \ bin;

      C: \ R \ R-2.14.2 \ bin \ i386, C: \ WINDOWS; C: \ WINDOWS \ system32



Trods alt dette, da jeg forsøgte at køre et testeksempel i R for at se om Rcpp fungerer, fik jeg en fejlmeddelelse. Her er testeksemplet:


library(Rcpp)
library(inline)

body <- '
NumericVector xx(x);
return wrap( std::accumulate( xx.begin(), xx.end(), 0.0));'

add <- cxxfunction(signature(x = "numeric"), body, plugin = "Rcpp")

x <- 1
y <- 2
res <- add(c(x, y))
res


Her er den ret lange fejlmeddelelse produceret af R som et resultat af at forsøge at udføre ovenstående R-kode. Kan nogen fortælle mig, hvad det er, at jeg gør forkert, og hvad skal jeg gøre for at sikre, at Rcpp virker?


cygwin warning:
MS-DOS style path detected: C:/R/R-214~1.2/etc/i386/Makeconf
Preferred POSIX equivalent is: /cygdrive/c/R/R-214~1.2/etc/i386/Makeconf
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
g++.exe: error: C:/Documents: No such file or directory
g++.exe: error: and: No such file or directory
g++.exe: error: Settings/dv6110ca/My: No such file or directory
g++.exe: error: Documents/R/win-library/2.14/Rcpp/lib/i386/libRcpp.a: No such file  
or directory

ERROR(s) during compilation: source code errors or compiler configuration errors!

Program source:
1: 
2: // includes from the plugin
3: 
4: #include <Rcpp.h>
5: 
6: 
7: #ifndef BEGIN\_RCPP
8: #define BEGIN\_RCPP
9: #endif
10: 
11: #ifndef END\_RCPP
12: #define END\_RCPP
13: #endif
14: 
15: using namespace Rcpp;
16: 
17: 
18: // user includes
19: 
20: 
21: // declarations
22: extern "C" {
23: SEXP file684203c3ec2( SEXP x) ;
24: }
25: 
26: // definition
27: 
28: SEXP file684203c3ec2( SEXP x ){
29: BEGIN\_RCPP
30: 
31: NumericVector xx(x);
32: return wrap( std::accumulate( xx.begin(), xx.end(), 0.0));
33: END\_RCPP
34: }
35: 
36: 
Error in compileCode(f, code, language = language, verbose = verbose) : 
Compilation ERROR, function(s)/method(s) not created! cygwin warning:
MS-DOS style path detected: C:/R/R-214~1.2/etc/i386/Makeconf
Preferred POSIX equivalent is: /cygdrive/c/R/R-214~1.2/etc/i386/Makeconf
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
g++.exe: error: C:/Documents: No such file or directory
g++.exe: error: and: No such file or directory
g++.exe: error: Settings/dv6110ca/My: No such file or directory
g++.exe: error: Documents/R/win-library/2.14/Rcpp/lib/i386/libRcpp.a: No such file or  
directory

Bedste reference


Du skal ikke ikke installere R i en mappe, der indeholder et mellemrum i stinavnet. Denne anbefaling er, som jeg husker, i 'R for Windows FAQ'.


Min personlige præference er altid c:optR-current i stedet for den versionerede standardsti.

Andre referencer 1


Fejlen er forklaret i de sidste 5 linjer i den besked, du sendte:


g++.exe: error: C:/Documents: No such file or directory
g++.exe: error: and: No such file or directory
g++.exe: error: Settings/dv6110ca/My: No such file or directory
g++.exe: error: Documents/R/win-library/2.14/Rcpp/lib/i386/libRcpp.a: No such file or  
directory


g++.exe leder efter en fil kaldet libRcpp.a, men filen er i en mappe med mellemrum i sit navn, især i din computer er filen i denne mappe:


C:/Documents and Settings/dv6110ca/My Documents/R/win-library/2.14/Rcpp/lib/i386/libRcpp.a


og stien til mappen indeholder 3 mellemrum (mellem Documents og and, mellem and og Settings, mellem My og Documents). På en måde kan din kompilator/linker ikke lide disse mellemrum.

Andre referencer 2


Jeg havde det samme problem med at oprette Rcpp. Det ser ud til at du afinstallerede R og derefter geninstallerer det for at oprette en opsætning, der er kompatibel med Rcpp. Når du gør dette, vil R installere pakker i samme mappe som de tidligere installationer. Når du har afinstalleret R, skal du sørge for at slette den mappe, der indeholder pakkerne. På min Windows 7-maskine var denne mappe placeret i C:/Users/Chandler/R. Slet denne mappe; geninstaller derefter R. Sørg for at nye pakker er installeret i din nye R-mappe, f.eks. C:RR-2.14.2library. Dette bør eliminere problemet med mellemrum i mappesteder, som Dirk nævnte ovenfor.


Sørg også for at stien er den samme som eksemplet i vejledningen 'R Installering og administration'. D Det er nemmest at følge denne vejledning, hvis du bruger den nyeste version af R i stedet for 2.14.2


Bemærk: Jeg får stadig cygwin-advarslen, selv om Rcpp fungerer.