我有一个程序,我需要X(nRow, nCol, nSlice)在Rcpp中重复计算每个立方体切片的列平均值,结果意味着形成一个矩阵M(nCol, nSlice).以下代码产生错误:
#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]
using namespace Rcpp;
using namespace arma;
// [[Rcpp::export]]
mat cubeMeans(arma::cube X){
int nSlice = X.n_slices;
int nCol = X.n_cols;
int nRow = X.n_rows;
arma::vec Vtmp(nCol);
arma::mat Mtmp(nRow, nCol);
arma::mat Means(nCol, nSlice);
for (int i = 0; i < nSlice; i++){
Mtmp = X.slice(i);
for(int j = 0; j < nCol; j++){
Vtmp(j) = sum(Mtmp.col(j))/nRow;
}
Means.col(i) = Vtmp;
}
return(wrap(Means));
}
Run Code Online (Sandbox Code Playgroud)
'/Rcpp/internal/Exporter.h:31:31:错误:没有匹配函数来调用'arma :: Cube :: Cube(SEXPREC*&)'
我无法弄明白.当函数的输入是一个矩阵(并返回一个向量)时,我没有得到错误.但是,我将上述功能作为主程序的一部分包括在内
#include …Run Code Online (Sandbox Code Playgroud)