Columnvise矩阵乘法与NA值。 m%*%diag(v)和t(t(m)* v)之间的差异

时间:2016-03-14 07:43:38

标签: r sparse-matrix matrix-multiplication

当矩阵中存在NA值时,对R中的矩阵进行乘法运算。

关于'右'方式进行列举乘法I R的一般建议似乎是:

m %*% diag(v)

支持:

t(t(m) * v)

但是,当我开始对包含NA值的矩阵开始使用此方法时,结果矩阵对包含NA

的行中的所有值都有NA个值

当通过矩阵转置时间向量转换为向量时,行为与预期一致。

在进行正常矩阵演算时,预计会出现NA值,我相信这是总和

m[2,2] = 0 * NA + 2 * 4 + 0 * 6 + 0 * 8 + 0 * 10  

其中NA值优先于乘法中的0值。

当R矩阵乘法*执行elementvise乘法,从而不会遇到0 * NA问题。

在进行标准矩阵乘法时,是否可以将0 * NA == NA的默认规则更改为== 0,以便获得优化矩阵计算rutines的优势?

m <- as.matrix(seq(1,10))
dim(m) <- c(2,5)               
v <- as.vector(1:5)

m[2,1] <- NA
m2 <- t(t(m) * v)
m3 <- m  %*%  diag(v)

> m2
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    6   15   28   45
[2,]   NA    8   18   32   50
> m3
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    6   15   28   45
[2,]   NA   NA   NA   NA   NA

由于

0 个答案:

没有答案