我正在尝试将两个R函数集成到rcpp中。我的代码在rcpp中,我需要包括“ genlasso”包中的两个R函数。
尤其是我的代码如下:
// [[Rcpp::depends(RcppArmadillo)]]
#include<RcppArmadillo.h>
using namespace Rcpp;
using namespace arma;
// [[Rcpp::export]]
List Rcpp_fusedlasso1d(NumericVector y, NumericMatrix X){
// Obtaining namespace of Genlasso package
Environment pkg = Environment::namespace_env("genlasso");
// Picking up fusedlasso1d function from genlassopackage
Function f = pkg["fusedlasso1d"];
List fs = f(y,Named("X",X));
return fs;
}
// [[Rcpp::export]]
List Rcpp_coef(List fs,double lambda2){
Environment pkg = Environment::namespace_env("genlasso");
Function g = pkg["coef"];
return g(fs,Named("lambda",lambda2));
}
/*** R
n = 100
i = 1:n
y = (i > 20 & i < 30) + 5*(i > 50 & i < 70) +rnorm(n, sd=0.1)
p=3
X = matrix(rnorm(n*p),nrow=n)
fs<-Rcpp_fusedlasso1d(y,X)
Rcpp_coef(fs,0.2)
*/
我尝试了各种变体来克服该问题,但没有用,并且总是收到以下错误“无法将对象转换为函数:[type = NULL; target = CLOSXP,SPECIALSXP或BUILTINSXP]”。 附言R中“ coef”函数的输出类型为“列表”。
谢谢。