Re: [R] matrix problem

From: Rolf Turner <r.turner_at_auckland.ac.nz>
Date: Tue, 22 Apr 2008 09:04:14 +1200

On 21/04/2008, at 9:54 PM, William Simpson wrote:

> Hi Everyone,
>
> I am running into a problem with matrices. I use R version 2.4.1 and
> an older version.
>
> The problem is this:
> m<-matrix(ncol=3,nrow=4)
> m[,1:3]<-runif(n=4)
>
> That does what I expect; it fills up the rows of the matrix with the
> data vector
>> m
> [,1] [,2] [,3]
> [1,] 0.2083071 0.2083071 0.2083071
> [2,] 0.5865763 0.5865763 0.5865763
> [3,] 0.7901782 0.7901782 0.7901782
> [4,] 0.8298317 0.8298317 0.8298317
>
> But this doesn't work:
> m[1:4,]<-runif(n=3)
>> m
> [,1] [,2] [,3]
> [1,] 0.96864939 0.11656740 0.06182311
> [2,] 0.11656740 0.06182311 0.96864939
> [3,] 0.06182311 0.96864939 0.11656740
> [4,] 0.96864939 0.11656740 0.06182311
>
> I want it to fill up the columns of the matrix with the data vector.
>
> Maybe there is a better way to do what I want. I need to do both of
> the above. The matrices are large, so I need a fast method.

R fills arrays in ``reverse odometer order'' --- the first index (row index in matrices) ticks over fastest; the second index second fastest. Unless you tell it to do otherwise.

In other words matrices get filled up column by column. Unless other instructions are given.

Thus m[] <- runif(3) (note that the ``1:4'' is redundant) puts the generated 3-vector into the first 3 entries of column 1, then starts over again, putting the first entry of that vector into the last entry of column 1, then the next two entries of the vector into the first two entries of column 2, and so on.

What you want to do is

        m <- matrix(runif(3),nrow=4,ncol=3,byrow=TRUE)

i.e. it is unnecessary and counter-productive to create m beforehand and then try to fill it up.

        cheers,

                Rolf Turner

######################################################################
Attention:\ This e-mail message is privileged and confid...{{dropped:9}}

R-help_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. Received on Mon 21 Apr 2008 - 21:08:33 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 22 Apr 2008 - 07:30:30 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive