[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