您好,我有一个关于将 NumericVector 对象视为多维数组的非常简单的 Rcpp 问题。我找不到可能显而易见的答案。如果是这种情况,请先道歉——我对 C++ 的经验不足是罪魁祸首......
如果我使用此处发布的答案(在 Rcpp 中构造 3D 数组) 举个例子
library("Rcpp")
cppFunction(code='
NumericVector arrayC(NumericVector input, IntegerVector dim) {
input.attr("dim") = dim;
return input;
}
')
如何从“输入”对象中提取/访问单个切片/行/列?
IE。做类似的事情
NumericMatrix X = input(_,_,i)
// FYI -- I know this doesn't work! Simply trying to convey the point...
是的,我知道可以使用 RcppArmadillo。我这样做有我的理由,但没有必要让人们感到厌烦。
Thanks.
Rcpp11
has Array为此,使用尺寸深度和 R 类型进行模板化。
例如,您可以这样做:
#include <Rcpp.h>
using namespace Rcpp ;
typedef Array<3,REALSXP> Numeric3D ;
// [[Rcpp::export]]
Numeric3D test(){
Numeric3D res(2,3,4) ;
for( int i=0; i<2; i++)
for( int j=0; j<3; j++)
for( int k=0; k<4; k++)
res(i,j,k) = i+j+k ;
return res ;
}
/*** R
test()
*/
所有相关的索引逻辑都在Index类模板。该实现使用 C++11 可变参数模板。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)