> o Fixed the following bug (also present in R-2.15.0 and R-3.0.2):
> x <- t(5)
> print (x %*% c(3,4))
> print (crossprod(5,c(3,4)))
> The call of crossprod produced an error, whereas the
> corresponding use of %*% does not.
> o Fixed the following bug (also present in R-2.15.0 and R-3.0.2):
> v <- c(1,2)
> m <- matrix(c(3,4),1,2)
> print(t(m)%*%v)
> print(crossprod(m,v))
> in which crossprod gave an error rather than produce the answer
> for the corresponding use of %*%.
As S and R's terminology has always been mathematically correct and
"knows" that a vector is not a 1-row matrix or 1-column matrix
(which some people call row-vector and column-vector), R has
indeed much more freedom to be lenient in how to promote vectors
to matrices, and it has always done so tolerantly for some cases
of "%*%", but even there is room for discussion, see below.
However, one can argue that the current behavior is quite
consistent {there is more than one kind of consistency here; in
this case it's the consistency of underlying C code IIRC}, and
not strictly a bug.