[R] Matrix multiplication with scattered NA values
arun
smartpink111 at yahoo.com
Tue May 14 06:37:54 CEST 2013
Hi,
Not sure if this is what you wanted:
mat1<- as.matrix(read.table(text="
33 45 50
NA NA 54
",sep="",header=FALSE))
mat2<- as.matrix(read.table(text="
24 0.0000000 0.0000000
0.0000000 14 0.0000000
0.0000000 0.0000000 10
",sep="",header=FALSE))
mat1%*%mat2
# V1 V2 V3
#[1,] 792 630 500
#[2,] NA NA NA
library(Matrix)
mat1m<- as(mat1,"dgCMatrix")
mat2m<- as(mat2,"dgCMatrix")
tcrossprod(mat1m,mat2m)
#2 x 3 sparse Matrix of class "dgCMatrix"
#
#[1,] 792 630 500
#[2,] NA NA 540
A.K.
>Hi,
>
>I'm looking to multiply two matrices together, one of which may
contain randomly placed NA values (i.e., there's no reason they will be
all in a row or >column), but I still want an output like the example
below:
>
>Matrix 1
>[1,] 33 45 50
>[2,] NA NA 54
>
>Matrix 2
>[1,] A1 0.0000000 0.0000000
>[2,] 0.0000000 A2 0.0000000
>[3,] 0.0000000 0.0000000 A3
>
>
>Result
>[1,] 33*A1 45*A2 50*A3
>[2,] NA NA (NA*0 +NA*0 +54*A3)=54*A3
>
>Simply doing Matrix1%*%Matrix2 doesn't give what I want for the
element in Row 2, Column 3 (it gives NA, which makes sense, but not sure
how to >do what I'd like it to do). For my purposes, Matrix 2 will
never have NA values, if that changes anything.
More information about the R-help
mailing list