[R] matrix columns

Jim Lemon jim at bitwrit.com.au
Mon Feb 1 10:35:06 CET 2010


On 02/01/2010 07:52 PM, ogbos okike wrote:
> Hello.
>   I am working with a set of variables which are in columns. Three of them
> are of the same length while one has a different length. Typing
> '>data<-matrix(c(ca$value, mo$value,b2$value, y1), ncol = 3)'
> appears to read any three columns out of the four, though I can say exactly
> which of these three columns are read.
> However, typing '>  data<-matrix(c(ca$value, mo$value,b2$value, y1), ncol =
> 4)' gives the warning message below:
> 'Warning message:
> In matrix(c(ca$value, mo$value, b2$value, y1), ncol = 4) :
>    data length [26637] is not a sub-multiple or multiple of the number of
> rows [6660]'
> Since y1 is the variable that has a different length, I dropped and used
> ncol = 3 and there was no error message. In order to be convinced that the
> error message is due to the difference in length of y1, I included y1 and
> dropped b2$value. There was no error message still, confusing me as to where
> the error arises when I tried to use ncol = 4.
>
> This implies that the matrix will accept any three column variables no
> matter the length, but once it is 4 variables in which case I think I should
> change ncol = 3 to ncol = 4 to reflect the number of columns. And I also
> intend to increase the number of these columns to about 10. Should I not be
> using ncol = n where n stands for the number of the columns I have in my
> matrix?
>
Hi Ogbos,
The warning means that you will get three "recycled" values from 
ca$value in the matrix that is generated. This happens whenever the 
total length of the data is not an even multiple of the number of rows. 
As I have never been able to resist these "number problems", I tried to 
work out how the lengths of the first three vectors would have to be 
distributed to be evenly divisible by three in both combinations. I 
think that the lengths of ca$value, mo$value and b2$value must be 
different for the swap of y1 and b2$value to also be divisible by three. 
However, I couldn't get a unique solution. Perhaps one of the more 
mathematical minds can crack the problem.

Jim



More information about the R-help mailing list