2016-07-28 21 views
0

Ich habe eine Matrix (MatA) von 1000 Zeilen und 1000 Spalten erstellt, und ich möchte die Kräfte dieser Matrix berechnen. Es funktioniert sehr gut bis zur Berechnung der 3. Potenz der Matrix. Aber wenn ich frage seine vierte Leistung zu berechnen, gibt es eine Warnmeldung zu sagen,Wie Integer-Überlauf in r auflösen?

„In matA * matA * matA * matA: NAs produziert von Integer-Überlauf“

Wie kann ich dieses Problem lösen?

+2

Konvertieren Sie die ganze Zahl in numerisch? – Psidom

+3

Sie möchten elementische Leistung oder Matrixleistung wie in t (mat)% *% mat? –

+1

Benötigen Sie die Matrixleistung. Ich habe eine numerische Konvertierung versucht. aber es gibt die gleiche Warnung. –

Antwort

2

Da Sie kein Beispiel gab:

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

Wenn Sie wirklich eine Matrizenpotenzen wollen (wie in z2 %*% z2 %*% z2 %*% z2), dann ist es am besten, das Matrix oder expm Paket zu verwenden.

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

Auf der anderen Seite, wenn Sie wirklich das element Produkt

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

Alles, was Sie ist in numerischen konvertieren tun müssen, wollen.

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