Skip to content
Prev 276476 / 398506 Next

Matrix element-by-element multiplication

There are a few (nasty?) side-effects to c(), one of which is
stripping a matrix of its dimensionality. E.g.,

x <- matrix(1:4, 2)
c(x)
[1] 1 2 3 4

So that's probably what happened to you. R has a somewhat odd feature
of not really considering a pure vector as a column or row vector but
being willing to change it to either:

e.g.

y <- 1:2

x %*% y
y %*% x
y %*% y

while matrix(y) %*% x throws an error, which can also trip folks up.
You might also note that x * y and y*x return the same thing in this
problem.

Getting back to your problem: what are v and b and what are you hoping
to get done? Specifically, what happened when you tried v*b (give the
exact error message). It seems likely that they are non-conformable
matrices, but here non-conformable for element-wise multiplication
doesn't mean the same thing as it does for matrix multiplication.
E.g.,

x <- matrix(1:4,2)
y <- matrix(1:6,2)

dim(x)
[1] 2 2

dim(y)
[1] 2 3

x * y -- here R seems to want matrices with identical dimensions, but
i can't promise that.

x %*% y does work.

Hope this helps and yes I know it can seem crazy at first, but there
really is reason behind it at the end of the tunnel,

Michael
On Sun, Nov 6, 2011 at 12:11 AM, Steven Yen <syen at utk.edu> wrote: