[R] row*matrix

David Winsemius dwinsemius at comcast.net
Sat Aug 6 22:43:42 CEST 2011


On Aug 6, 2011, at 4:35 PM, smajor wrote:

> Hi all, I'm learning R. I'm used to Matlab and am having the  
> following issue:
>
> I define a column vector and matrix and then multiply them.  The  
> result is
> not what I expect:
> v2 <- c(0,1,0)
> M <- cbind(c(1,4,7),c(2,5,8),c(3,6,9))
> M*v2
>
>     [,1] [,2] [,3]
> [1,]    0    0    0
> [2,]    4    5    6
> [3,]    0    0    0
>
> I expect the result to be a column, specifically the 2nd column of M.
>
> Now I want to left multiply the matrix by a row vector, and I get  
> errors:
> t(v2)*M
> Error in t(v2) * M : non-conformable arrays
>> V2 <- t(v2)
>> V2*M
> Error in V2 * M : non-conformable arrays
> I would expect to get the 2nd row of M as an output.
>
> Why am I not getting a column for the first case?  Why is the second  
> case
> causing errors?  Any help would be greatly appreciated.  I can get the

Vector are not column or row vectors by default. They don't actually  
have a dim attribute unless you force one on them. Also you are using  
a scalar operator and need to use "%*%" to do matrix  
multiplication ....  so:

 > dim(v2) <-c(1,3)
 > v2%*%M
      [,1] [,2] [,3]
[1,]    4    5    6

As expected. So now you should go back to your introductory material  
as well as help("%*%") and help("*").

-- 

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list