这是我第一次尝试Rcpp,但这个非常简单的问题让我困扰。我想使用嵌套的for循环逐列操作矩阵中的每个值。我希望最终的脚本看起来像这样:
src <- '
Rcpp::NumericMatrix Am(A);
int nrows = Am.nrow();
int ncolumns = Am.ncol();
for (int i = 0; i < ncolumns; i++){
for (int j = 1; j < nrows; j++){
Am[j,i] = Am[j,i] + Am[j-1,i];
}
}
return Am;
'
fun <- cxxfunction(signature(A = "numeric"), body = src, plugin="Rcpp")
fun(matrix(1,4,4))
期望的输出应该是这样的:
[,1] [,2] [,3] [,4]
[1,] 1 1 1 1
[2,] 2 2 2 2
[3,] 3 3 3 3
[4,] 4 4 4 4
明显问题出在这行代码,我不知道如何引用矩阵中的单个元素。Am[j,i] = Am[j,i] + Am[j-1,i];
如果这是个愚蠢的新手问题,我很抱歉。任何提示都将不胜感激!
rcpp-devel
是提出这些问题的更好地方。 - Dirk Eddelbuettelrcpp-devel
列表可能会更容易接触到有经验的rcpp
用户,但在我看来,stackoverflow 更加易于访问。 - jbaums