2017-10-06 105 views
-1

我是使用R包“Rcpp”的新手。我的问题是,如果我想在另一个C++函数中使用C++函数作为参数,我该怎么做?例如:假设我有一个这样的C++函数:在R包中的另一个C++函数中使用C++函数“Rcpp”

#include <Rcpp.h> 
using namespace Rcpp; 

// [[Rcpp::export]] 
double maxllC3(const double mu){ 
double result; 
result= R::dgamma(mu,0.1,1,0.1); 
return result; 
} 

。我想在另一个C++函数中使用这个函数,就像我们可以在R中这样做:

sumf<-function(maxllC3,mu,y){ 
    res<-maxllC3(mu)+y 
    return(res) 
} 

。我怎么能在“Rcpp”包中做到这一点?

+0

我不明白为什么第一个函数需要作为参数传递给第二个传递功能。 – Roland

+0

@罗兰嗨罗兰,这只是一个例子。我将把这个应用于很复杂的例子。 – gultu

+0

因此,从R调用第二个函数时,用户应该将C++函数作为参数传递?这很不寻常。我怀疑[xy问题](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 – Roland

回答

-1
  • 将您的rcpp代码放在.cpp文件中(比如ex.cpp)。

  • 使用Rcpp::sourceCpp('ex.cpp')使全球环境中可用此功能

  • 就用sumf <- function(mu, y) maxllC3(mu) + y

+0

非常感谢! – gultu

+0

@gultu如果你对答案没问题,你可以验证它。 –