[Rcpp-devel] Filling NumericMatrix with NumericVectors with apply by row/column?

Romain Francois romain at r-enthusiasts.com
Sun Aug 22 14:23:58 CEST 2010


Hello,

There currently is no sugar facility to generate a matrix the way you 
want. The last option is probably the best thing to do for now.

Perhaps outer can help you :

NumericVector xx(x) ;
NumericVector yy(y);
NumericMatrix m = outer( xx, yy, std::plus<double>() ) ;
return m ;

Romain

Le 21/08/10 23:13, Christian Gunning a écrit :
> Dear list,
>
> I'm amazed at the ability to use the apply family in Rcpp.  Yet I'm still
> unsure of the best way to assign NumericVector objects into
> NumericMatrix objects.  Must this be done element-by-element, or is
> there something equivalent to R's MyMatrix[,1] = MyColVector?
> (As an aside, are both mymatrix[i,j] and mymatrix(i,j) equivalent?  It
> seems that I've seen them used interchangably on the list.)
>
> A simple example of what I'm aiming for:
> Make an n*n matrix, and use sapply to perform a vector operation by
> row, here constructing a vector of length n full of zeros.
>
> // a simple vector-returning function
> NumericVector zeros( int n){
>   NumericVector ret(n);
>   ret = 0;
>   return ret;
> }
>
> // sapply version, doesn't work but is easy to read
> SEXP foo( int n ){
>   NumericVector x(n);
>   x = n;
>   NumericMatrix xx(n,n) ;
>   // possible to assign by row or column?
>   xx = sapply( x, zeros ) ;
>   return(xx);
> }
>
> // the looped version, where xx[,i] is not syntactically valid
> SEXP foo1( int n ){
>   NumericVector x(n);
>   int i;
>   NumericMatrix xx(n,n) ;
>   // possible to assign by row or column?
>   for (i =0; i<n; i++) {
>     xx[,i] = zeros(n) ;
>   }
>   return(xx)
> }
>
>
> // syntactically valid, element-wise assignment
> SEXP foo2( int n ){
>   NumericVector x(n);
>   int i, j;
>   NumericMatrix xx(n,n) ;
>   // possible to assign by row or column?
>   for (i=0; i<n; i++) {
>     x = zeros(n) ;
>     for (j=0;  j<n; j++) {
>       xx(i,j) = x[j]
>     }
>   }
>   return(xx)
> }
>
> thanks so much,
> Christian Gunning
> --
> A man, a plan, a cat, a ham, a yak, a yam, a hat, a canal – Panama!

-- 
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr
|- http://bit.ly/bzoWrs : Rcpp svn revision 2000
|- http://bit.ly/b8VNE2 : Rcpp at LondonR, oct 5th
`- http://bit.ly/aAyra4 : highlight 0.2-2



More information about the Rcpp-devel mailing list