小编Nap*_*gas的帖子

列表示3d矩阵(立方体)Rcpp

我有一个程序,我需要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)

r matrix armadillo rcpp

2
推荐指数
1
解决办法
1443
查看次数

标签 统计

armadillo ×1

matrix ×1

r ×1

rcpp ×1