[Rd] more Matrix weirdness

Abby Spurdle @purd|e@@ @end|ng |rom gm@||@com
Thu Sep 17 09:19:27 CEST 2020


> There may be cases when changing the class of the left-hand side make sense (such as one subclass of "Matrix" to another) but certainly not for the base R vector classes.

I'm not sure what you mean by "not for the base R vector classes".
Historically, the simpler class (or mode) gets coerced to the more
complex class (or mode).

    x <- y <- 1:10
    y [1] <- 1

    (class (x) == class (y) ) #FALSE

Also, I note the behavior of multiplication of a matrix with a Matrix.

    library (Matrix)

    m <- matrix (1:16, 4, 4)
    M <- Matrix (1:16, 4, 4)

    as.vector (class (m * M) )   #dgeMatrix
    as.vector (class (M * m) )   #dgeMatrix
    as.vector (class (m %*% M) ) #dgeMatrix
    as.vector (class (M %*% m) ) #dgeMatrix

So, here also, the output is a Matrix, regardless of the type of
multiplication, or the order of the operands.

But the following surprised me:

    k <- m
    mode (k) <- "complex"
    k %*% M



More information about the R-devel mailing list