【发布时间】:2019-02-25 06:16:33
【问题描述】:
一般我们在c++中写一个函数来解析一个二维数组时,会先经过第一行,然后再移动到第二行。
for(int i = 0; i < ROW_SIZE; i++){
for(int j = 0; j < COL_SIZE; j++){
*((Mat+i*COL_SIZE) + j) = value;
}
}
但是,当我使用 Rcpp::NumericMatrix 时,它首先解析列。
// [[Rcpp::export]]
NumericMatrix TestMatrixParsing(){
NumericMatrix xx(4, 5);
int xsize = xx.nrow() * xx.ncol();
for (int i = 0; i < xsize; i++) {
xx[i] = i+100;
}
return xx;
}
/*** R
TestMatrixParsing()
# [,1] [,2] [,3] [,4] [,5]
# [1,] 100 104 108 112 116
# [2,] 101 105 109 113 117
# [3,] 102 106 110 114 118
# [4,] 103 107 111 115 119
*/
有什么方法可以强制它解析行,因为我之前的代码被编写为将矩阵存储为连续行,因此指针不必跳转等于 COL_SIZE。
【问题讨论】:
-
你可以先转置。 许多以向量为中心的语言的列顺序很自然。
标签: rcpp