【发布时间】:2021-06-25 20:51:02
【问题描述】:
我在 C++ 中定义了两个函数,我使用 Rcpp 包在 R 中调用它们。我将 f1 和 f2 函数都放在一个 cppFunction() 中。运行此程序后,f1 函数在 R 中正常工作,但在调用 f2 时出现此错误:“找不到函数 f2”。代码如下:
cppFunction('
std::vector<double> f1( double lambda, double gamma) {
double a = exp(-(lambda+gamma));
double b = lambda+gamma;
std::vector<double> v;
v.push_back(a);
v.push_back(b);
return v;
}
std::vector<double> f2(double lambda, double gamma ,double alpha) {
std::vector<double> res;
res=f1(lambda, gamma);
res[0] *= alpha;
res[1] *= 1-alpha;
double lik = res[0]+res[1];
res.push_back(lik);
res.push_back(res[1]);
return res;
}
')
您对如何解决此问题有任何建议吗?
【问题讨论】:
-
首先要做的是检查 rcpp 文档以确保您可以在一个
cppFunction块中定义 2 个函数。 -
您(正如前面的评论所暗示的)受
cppFunction()的约束。使用sourceCpp()或者写一个包。 -
你实际上可以使用
cppFunction()(以及它的前身来自inline包)但是你需要提供一个块列表,因为每个块都被包裹在幕后。sourceCpp()更简单。 -
@Dirk Eddelbuettel 谢谢,sourceCpp() 有效!