1
我正在將一些準備好的函數的R代碼翻譯爲RcppArmadillo。我想直接在我的Rcpp代碼中使用其中的一些功能,而不是翻譯。例如,我要調用的函數sigma2
:使用armadillo數據類型在RcppArmadillo中調用R函數
sigma2<- function(xi.vec,w.vec,log10lambda,n,q){
lambda <- 10^log10lambda
(1/(n-q))*sum((lambda*xi.vec*(w.vec^2))/(lambda*xi.vec+1))
}
典型RCPP代碼如下:
#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::export]]
SEXP myS(){
Rcpp::Environment myEnv = Rcpp::Environment::global_env();
Rcpp::Function myS = myEnv["sigma2"];
arma::vec xvec = myEnv["xi.vec"];
arma::vec wvec = myEnv["w.vec"];
double l = myEnv["log10lambda"];
int n = myEnv["n"];
int q = myEnv["q"];
return myS(Rcpp::Named("xi.vec",xvec),
Rcpp::Named("w.vec",wvec),
Rcpp::Named("l",l),
Rcpp::Named("n",n),
Rcpp::Named("q",q));
}
當然它的工作原理。但我的問題是,在我的情況下,sigma2
函數的參數應該作爲RcppArmadillo中另一個函數(比如func1
)的輸出定義,並且它們具有犰狳數據類型。例如,xi.vec
和w.vec
有vec
類型。現在我想知道如何修改此代碼以致電sigma2
?我需要改變我的環境嗎?
感謝您的回答。這正是我所期待的。 – Ham82
不是「相當」的放緩;它增加了一個可測量的圖層,但會讓它看起來太戲劇化。 –