我创建了一个1000行1000列的矩阵(matA
),我想计算这个矩阵的幂。它非常适合计算矩阵的三次幂。但是当我要求计算它的第四个力量时,它会发出警告信息,
在matA * matA * matA * matA:整数溢出产生的NAs
如何解决此问题?
答案 0 :(得分:3)
由于你没有给出一个例子:
set.seed(101)
z <- matrix(rnorm(1e6),1e3)
z2 <- round(z)*1000000
storage.mode(z2) <- "integer"
如果您真的需要矩阵功率(如z2 %*% z2 %*% z2 %*% z2
),最好使用Matrix
或expm
包。
library(expm)
z4C <- z2 %^% 4
另一方面,如果你真的想要元素产品
z4D <- z2*z2*z2*z2
## Warning message "NAs produced"
您需要做的就是转换为数字。
storage.mode(z2) <- "numeric"
z4E <- z2*z2*z2*z2 ## fine