return のときに次元を決めるのを前の記事の最後に書いたけど,やはり宣言する場所で決めるのが普通なので,そちらを。
しかし,いずれにしても,添え字は一個。
> library(inline)
> src <- '
+ int n1 = as<int>(N1);
+ int n2 = as<int>(N2);
+ int n3 = as<int>(N3);
+ Rcpp::NumericVector x(Dimension(n1, n2, n3));
+ x[1+n1*2+n1*n2*3] = 123;
+ x[0+n1*1+n1*n2*1] = 11;
+ x[0] = 0;
+ x[1] = 1;
+ x[5] = 5;
+ x[23] = 23;
+ return wrap(x);
+ '
> arry <- cxxfunction(signature(N1="integer", N2="integer", N3="integer"), src, plugin="Rcpp")
> arry(2, 3, 4)
, , 1
[,1] [,2] [,3]
[1,] 0 0 0
[2,] 1 0 5
, , 2
[,1] [,2] [,3]
[1,] 0 11 0
[2,] 0 0 0
, , 3
[,1] [,2] [,3]
[1,] 0 0 0
[2,] 0 0 0
, , 4
[,1] [,2] [,3]
[1,] 0 0 0
[2,] 0 0 23
※コメント投稿者のブログIDはブログ作成者のみに通知されます