2016-07-28 11 views
0

私は1000行と1000列の行列(matA)を作成しました。この行列のべき乗を計算したいと思います。行列の3乗を計算するのは非常にうまくいく。しかし、私はその4乗を計算するために要求したとき、それは言って、警告メッセージ、rの整数オーバーフローを解決するには?

を与える「マタ* MATA * MATA *マタ:整数オーバーフローによって生成NAの」

は、どのように私はこの問題を解決することができますか?

+2

整数を数値に変換しますか? – Psidom

+3

t(マット)%*%マットのように、電波電力またはマトリックス電力が必要ですか? –

+1

マトリックスパワーが必要です。私は数値変換を試みました。同じ警告が表示されます。 –

答えて

2

あなたは一例を与えていないので:

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

あなたが本当に(z2 %*% z2 %*% z2 %*% z2のように)行列のパワーが必要な場合、それはMatrixまたはexpmパッケージを使用するのが最善です。あなたが本当に要素単位製品

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

をしたい場合一方、あなたがする必要があるのは、数値に変換

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

です。

storage.mode(z2) <- "numeric" 
z4E <- z2*z2*z2*z2 ## fine 
関連する問題