4

我一直在尝试在 Windows XP 平台上使用 R 2.14.2 中的 Rcpp。据我所知,我遵循了让 Rcpp 工作的所有推荐步骤:

  1. 我将 R 安装在名为 C:\R\R-2.14.2 的目录中;
  2. 我在目录 C:\R\Rtools 中安装了最新版本的 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
4

3 回答 3

4

不要R 安装在路径名中包含空格的目录中。我记得,该建议在“R for Windows FAQ”中。

我个人的偏好总是c:\opt\R-current\而不是版本化的默认路径。

于 2012-03-19T03:36:13.737 回答
3

您发布的消息的最后 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 个空格(介于Documentsand and、 between andand Settings、 between Myand Documents)。在某种程度上,您的编译器/链接器不喜欢那个空格。

于 2012-10-07T13:18:43.173 回答
2

我在设置 Rcpp 时遇到了同样的问题。看起来您卸载了 R 然后重新安装它以创建与 Rcpp 兼容的设置。执行此操作时,R 会将软件包安装在与先前安装相同的文件夹中。卸载 R 后,请确保删除包含软件包的文件夹。在我的 Windows 7 机器上,这个文件夹位于C:/Users/Chandler/R. 删除此文件夹;然后重新安装 R。确保新软件包安装在新的 R 文件夹中,例如C:\R\R-2.14.2\library. 这应该可以消除 Dirk 上面提到的文件夹位置中的空格问题。

此外,确保路径与“R 安装和管理”手册附录 D 中的示例相同。如果您使用的是最新版本的 R 而不是 2.14.2,则最容易遵循本手册

注意:即使 Rcpp 有效,我仍然会收到 cygwin 警告。

于 2012-07-05T17:54:25.453 回答