Как заставить Rcpp работать в R на платформе Windows XP? - PullRequest
4 голосов
/ 19 марта 2012

Я пытался работать с Rcpp в R 2.14.2 на платформе Windows XP. Насколько я могу судить, я выполнил все рекомендуемые шаги, чтобы заставить Rcpp работать:

  1. Я установил R в каталог с именем C: \ R \ R-2.14.2;
  2. Я установил последнюю версию Rtools в каталог C: \ R \ Rtools;
  3. Я установил для среды PATH следующее (в том же порядке):

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

Несмотря на все это, когда я попытался запустить тестовый пример в R, чтобы проверить, работает ли Rcpp, я получил сообщение об ошибке. Вот тестовый пример:

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

Вот довольно длинное сообщение об ошибке, выдаваемое R в результате попытки выполнить вышеуказанный R-код. Может кто-нибудь сказать мне, что я делаю неправильно и что еще мне нужно сделать, чтобы убедиться, что Rcpp работает?

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

Ответы [ 3 ]

4 голосов
/ 19 марта 2012

Do not установить R в каталог, содержащий пробел в имени пути. Эта рекомендация, как я помню, содержится в разделе «Часто задаваемые вопросы по R для Windows».

Мои личные предпочтения всегда c:\opt\R-current\ вместо версионного пути по умолчанию.

3 голосов
/ 07 октября 2012

Ошибка объясняется в последних 5 строках отправленного вами сообщения:

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 ищет файл с именем libRcpp.a, но файл находится в папке с пробелами в егоимя, в частности на вашем компьютере файл находится в этой папке:

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

и путь к папке содержит 3 пробела (между Documents и and, между and и Settingsмежду My и Documents).В некотором смысле вашему компилятору / компоновщику не нравятся эти пробелы.

2 голосов
/ 05 июля 2012

У меня была такая же проблема при настройке Rcpp. Похоже, вы удалили R, а затем переустановили его, чтобы создать установку, совместимую с Rcpp. Когда вы сделаете это, R установит пакеты в ту же папку, что и предыдущие установки. После удаления R обязательно удалите папку, в которой находятся пакеты. На моей машине с Windows 7 эта папка находилась в C:/Users/Chandler/R. Удалить эту папку; затем переустановите R. Убедитесь, что новые пакеты установлены в вашей новой папке R, например, C:\R\R-2.14.2\library. Это должно устранить проблему с пробелами в папках, о которых упоминал Дирк выше.

Кроме того, убедитесь, что путь такой же, как в примере в приложении D. Руководство по установке и администрированию R. Проще всего следовать этому руководству, если вы используете самую последнюю версию R вместо 2.14.2

Примечание: я все еще получаю предупреждение Cygwin, хотя Rcpp работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...