2017-10-06 66 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如果你對答案沒問題,你可以驗證它。 –

相關問題