gpt4 book ai didi

r - rcpp函数调用另一个rcpp函数

转载 作者:行者123 更新时间:2023-12-03 20:45:40 27 4
gpt4 key购买 nike

我猜这是一个简单的问题,但是我是Cpp的新手,并且陷入困境。

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

// [[Rcpp::export]]


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

接下来,我要使用调用第一个函数的 F2创建另一个函数 Rcpp。我使用标准函数调用语言(即 F1(arguments)),当我使用 sourceCpp()时,它可以通过R正常编译。

但是,当我尝试在R中调用 F2时,我得到:


.Primitive(“。Call”)(





F2丢失


第一个 .cpp文件包含

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
double F1(NumericVector a) {
int n = a.size();
double result=0; // create output vector
double ss = 0;

for(int i = 0; i < n; ++i) {
ss += pow(a[i],2);
}

result = ss;
return result;
}


以下是另一个.cpp文件中。

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
double F2(NumericVector a) {
double result=0;

result = F1(a);

return result;
}

最佳答案

只需将两个函数放在同一个.cpp文件中,或开始处理软件包。

如果您坚持使用单独的.cpp文件,则F2不了解F1。您可以将F1作为R函数进行回调,但是效率不高,您将不得不处理将输出转换为double的问题,等等。

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
double F2(NumericVector a) {
double result=0;

// grab the R function F1
Function F1( "F1" ) ;
result = as<double>( F1(a) );

return result;
}


但是,请真正创建一个包或将所有功能放在同一 .cpp文件中。

关于r - rcpp函数调用另一个rcpp函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19745735/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com