Rcpp编译错误

teu*_*cer 3 r rcpp

我试图从Rcpp网页编译简单的Rcpp示例:inline

Rcpp::NumericVector orig(vector);                  
Rcpp::NumericVector vec(orig.size());          
std::transform(orig.begin(),orig.end(),vec.begin(),sqrt);

return Rcpp::List::create(Rcpp::Named("result")=vec,Rcpp::Named("original") =orig);
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

no matching function for call to 'transform(Rcpp::traits::storage_type<14>::type*, Rcpp::traits::storage_type<14>::type*, Rcpp::traits::storage_type<14>::type*, <unresolved overloaded function type>)
Run Code Online (Sandbox Code Playgroud)

我使用带有Rtools的Windows XP(没有STL的其他示例工作!),使用R 2.12.0.

Dir*_*tel 6

啊.sqrt()现在在Rcpp Sugar中重载,因此您需要显式引用从C导入的全局C++命名空间中的符号.所以请尝试使用以下行:

std::transform(orig.begin(),orig.end(),vec.begin(),::sqrt);
Run Code Online (Sandbox Code Playgroud)

在这里工作:

R> require(inline)
R> src <- '
+     Rcpp::NumericVector orig(vector);
+     Rcpp::NumericVector vec(orig.size());
+     std::transform(orig.begin(), orig.end(), vec.begin(), ::sqrt);
+     return Rcpp::List::create(Rcpp::Named("result") = vec,
+                               Rcpp::Named("original") = orig);
+ '
R> fun <- cxxfunction(signature(vector="numeric"), src, plugin="Rcpp")
R> fun(1:9)
$result
[1] 1.00000 1.41421 1.73205 2.00000 2.23607 2.44949 2.64575 2.82843 3.00000

$original
[1] 1 2 3 4 5 6 7 8 9

R> 
Run Code Online (Sandbox Code Playgroud)

您能否向我发送需要更新的页面/示例的URL?

  • @Dirk Eddelbuettel我看着黑暗面(即文档)...... (3认同)
  • 好的,我通过在`sqrt`之前添加现在需要的`::`来修复html页面. (2认同)
  • 但是它被定义了,参见`Rcpp/inst/include/Rcpp/sugar/functions/math.h`,并且经常,*"使用源,Luke"*是经常使用的规则. (2认同)