如何解决整数溢出?

时间:2016-07-28 14:38:10

标签: r matrix integer-overflow

我创建了一个1000行1000列的矩阵(matA),我想计算这个矩阵的幂。它非常适合计算矩阵的三次幂。但是当我要求计算它的第四个力量时,它会发出警告信息,

  

在matA * matA * matA * matA:整数溢出产生的NAs

如何解决此问题?

1 个答案:

答案 0 :(得分:3)

由于你没有给出一个例子:

set.seed(101)
z <- matrix(rnorm(1e6),1e3)
z2 <- round(z)*1000000
storage.mode(z2) <- "integer"

如果您真的需要矩阵功率(如z2 %*% z2 %*% z2 %*% z2),最好使用Matrixexpm包。

library(expm)
z4C <- z2 %^% 4

另一方面,如果你真的想要元素产品

z4D <- z2*z2*z2*z2
## Warning message "NAs produced"

您需要做的就是转换为数字。

storage.mode(z2) <- "numeric"
z4E <- z2*z2*z2*z2  ## fine