同一个cpp文件中的两个rcpp函数

时间:2016-05-05 08:55:17

标签: r rcpp

我猜这是一个简单的问题,但我是Cpp的新手,我被卡住了。

我在R中创建了一个函数,使用Rcpp和:

// [[Rcpp::export]]

我可以在R中调用该函数,它可以按预期工作。我们称之为F1()

接下来,我想在调用第一个函数的同一个文件cpp中创建另一个函数F2()。我使用标准函数调用语言(即F1(arguments)),当我使用sourceCpp()时,它通过R编译得很好。但是当我尝试在R中调用F2()时,我得到:

  

eval(expr,envir,enclos)出错:找不到函数“F2”

有什么建议吗?

感谢。

#include <Rcpp.h>
using namespace Rcpp;


// [[Rcpp::export]]
NumericVector F1(NumericVector x) {
  return x * 2;
}
NumericVector F2(NumericVector x) {
    return x *F1(x);
}
 // even if i put return x*x*x instead of x*F1(X), I got the same error

/*** R
F1(42)
F2(51)
*/

1 个答案:

答案 0 :(得分:1)

对于每个功能,您必须提供导出器注释 // [[Rcpp :: export]] 。 此行对于将函数发送到 R 非常重要。您的代码必须写为:

#include <Rcpp.h>
using namespace Rcpp;


// [[Rcpp::export]]
NumericVector F1(NumericVector x) {
  return x * 2;
}
// [[Rcpp::export]]
NumericVector F2(NumericVector x) {
    return x *F1(x);
}


/*** R
F1(42)
F2(51)
*/