如何解决整数溢出?

问题描述 投票:0回答:1

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

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

我该如何解决这个问题?

r matrix integer-overflow
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.