我正在运行64位Windows 7平台。
我已添加到已安装的程序/库中:
Rtools
R(软件)
Rcpp(R package)
内联(R包)
我尝试了一个代码段here
## now with Rcpp and C++
library(inline)
# and define our version in C++
src <- "int n = as<int>(ns);
double x = as<double>(xs);
for (int i=0; i<n; i++) x=1/(1+x);
return wrap(x); "
l <- cxxfunction(signature(ns="integer", xs="numeric"),
body=src, plugin="Rcpp")
但这不起作用(说实话并不奇怪,因为我甚至没有指定例如Rtools的位置)。我收到以下错误消息:
Error in system(cmd, intern = !verbose) : 'C:/Program' not found
我不确定这意味着什么。而且,我已经被困在那里几个小时了。有人可以帮助我吗?
答案 0 :(得分:1)
R on Windows FAQ在问题2.2中说:
如果您希望能够从源代码构建软件包,我们建议您这样做 选择不包含空格的安装路径。
另见FAQ的问题2.16。我相当肯定我们也在Rcpp文档中反复提到这一点。
现在,如果您放弃内联包,并尝试使用RStudio,那么您可能会解决这个问题(因为需要更多努力来保护带有空格的$PATH
)。
但简而言之,我会重新安装R,比如C:\R\R-$version
,因为这是获得所有示例默认行为的唯一方法。而且我们有很多。值得重新安装。
答案 1 :(得分:0)
根据nograpes建议我得到:
>> setting environment variables:
PKG_LIBS = C:/Users/ (...) /DOCUME~1/R/WIN-LI~1/3.0/Rcpp/lib/x64/libRcpp.a
>> LinkingTo : Rcpp
CLINK_CPPFLAGS = -I"C:/Users/ (...) /Documents/R/win-library/3.0/Rcpp/include"
>> 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 file47844fc6c7a( SEXP ns, SEXP xs) ;
24 : }
25 :
26 : // definition
27 :
28 : SEXP file47844fc6c7a( SEXP ns, SEXP xs ){
29 : BEGIN_RCPP
30 : int n = as<int>(ns);
31 : double x = as<double>(xs);
32 : for (int i=0; i<n; i++) x=1/(1+x);
33 : return wrap(x);
34 : END_RCPP
35 : }
36 :
37 :
Compilation argument:
C:/Program Files/R-3.0.1/bin/x64/R CMD SHLIB file47844fc6c7a.cpp 2> file47844fc6c7a.cpp.err.txt
Error in file(con, "r") : cannot open the connection
In addition: Warning message:
In file(con, "r") :
cannot open file 'file47844fc6c7a.cpp.err.txt': No such file or directory
但是,我承认这对我帮助不大。