hi nick, On 12 February 2014 at 09:23, Nick Menzies wrote: | Hi Dirk, thanks for pointing me in the right direction. | | My solution below for a 3D array (documenting for rubes like myself). N | | library(Rcpp) | library(RcppArmadillo) | | cppFunction(' | double NewFunc( NumericVector ArrayR ) { | IntegerVector DimsA = ArrayR.attr("dim"); | arma::cube ArrayC(ArrayR.begin(),DimsA[0],DimsA[1],DimsA | [2],false); | double Output = ArrayC(1,2,3) + ArrayC(2,3,4); | return Output; | }', depends="RcppArmadillo") | | NewFunc(array(1,dim=c(5,5,5))) # Test, works
Looks good -- do you want to roll this up with a paragraph or two of motivation and explanation and submit to the Rcpp Gallery? Dirk | On Tue, Feb 11, 2014 at 3:34 PM, Dirk Eddelbuettel <e...@debian.org> wrote: | | | (Resending, this time with CC to list. Sorry for the extra first post. | --Dirk) | | On 11 February 2014 at 11:49, Nick Menzies wrote: | | Is there a way to pass an array into c++ when using cppFunction? I | realize | | arrays have been discussed a number of times, but the solutions I have | found | | (e.g. http://markovjumps.blogspot.com/2011/12/ | | r-array-to-rcpparmadillo-cube.html, or https://www.mail-archive.com/ | | rcpp-devel@lists.r-forge.r-project.org/msg05897.html) are described in | the | | context of cxxfunction, and I haven't been able to work how to implement | this | | with cppFunction. | | An array is just a vector with a dimension attribute. Treat it the same at | the C++ level. | | There are several posts at the Rcpp Gallery dealing with reading / setting | attributes, and you should know how to pass a single vector through. | | Dirk | | -- | Dirk Eddelbuettel | e...@debian.org | http://dirk.eddelbuettel.com | | | | | -- | | Nick Menzies | nick.menz...@gmail.com | 404 217 1076 -- Dirk Eddelbuettel | e...@debian.org | http://dirk.eddelbuettel.com _______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel