2016-07-28 3 views
0

Я создал матрицу (matA) из 1000 строк и 1000 столбцов, и я хочу рассчитать полномочия этой матрицы. Он работает очень хорошо, чтобы вычислить 3-ю степень матрицы. Но когда я прошу, чтобы вычислить его 4-й степени, это дает предупреждение говоря,Как решить переполнение целых чисел в r?

«В Мата * Mata * Mata * Мата: NAs производства целочисленное переполнение»

Как я могу решить эту проблему?

+2

Преобразование целочисленного числа в числовое? – Psidom

+3

Вы хотите, чтобы мощность элемента или матрицы была такой же, как у t (mat)% *% mat? –

+1

Нужна мощность матрицы. Я попробовал числовое преобразование. но он дает то же предупреждение. –

ответ

2

Поскольку вы не дали пример:

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 
Смежные вопросы