【发布时间】:2017-05-20 02:50:18
【问题描述】:
我正在将带有一些准备好的函数的 R 代码翻译成 RcppArmadillo。我想直接在我的 Rcpp 代码中使用其中一些函数,而不是进行翻译。比如我要调用sigma2函数:
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?我需要改变我的环境吗?
【问题讨论】: