[Rcpp-devel] Array into C++ with cppFunction

Nick Menzies nick.menzies at gmail.com
Wed Feb 12 15:23:14 CET 2014


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



On Tue, Feb 11, 2014 at 3:34 PM, Dirk Eddelbuettel <edd at 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 at 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 | edd at debian.org | http://dirk.eddelbuettel.com
>



-- 

Nick Menzies
nick.menzies at gmail.com
404 217 1076
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20140212/bf503488/attachment-0001.html>


More information about the Rcpp-devel mailing list