1

我正在尝试将两个 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, or BUILTINSXP]”。PS R中“coef”函数的输出类型是“list”。

先感谢您。

4

0 回答 0