在处理矩阵包中的0列或0行矩阵时出现意外错误。 我的一个函数有时可以用退化输入调用,它必须将矩阵与一些有0行或列的矩阵相乘。 产品是MxI,I为0x1,M nx0。预期结果是nx1零的矩阵。 我和M都是密集矩阵(dgeMatrix)。 该产品给我随机的结果,好像它们在某处有一些内存泄漏。 这是一个会重现我的错误的代码:
library(Matrix)
I = as(Matrix(0,0,1),"dgeMatrix")
M = as(Matrix(0,10,0),"dgeMatrix")
M %*% I
M %*% I #should be the same as above but it is likely to be different
summary(sapply(1:1000, function(...)max(abs(M %*% I))))
如果矩阵有超过1行或1列,或者矩阵的类是dgcMatrix,则不会出现问题。解决方法是强制输入dgcMatrix。 有人遇到过同样的问题吗?
干杯! SEB