2013-02-20 4 views
5

Я хотел бы создать массив матриц таким образом, чтобы сначала создать массив из k-матриц с значениями NA, а затем перебрать k и обновить каждую k-мерную матрицу через массив.R, создающий массив матриц

Любые предложения?

ответ

8

Я, вероятно, отсутствует пункт, но не:

k = 2; n=3; m = 4 
array(NA, c(n,m,k)) 

, , 1 

    [,1] [,2] [,3] [,4] 
[1,] NA NA NA NA 
[2,] NA NA NA NA 
[3,] NA NA NA NA 

, , 2 

    [,1] [,2] [,3] [,4] 
[1,] NA NA NA NA 
[2,] NA NA NA NA 
[3,] NA NA NA NA 

дать вам то, что вы хотите? Затем вы можете обходить как обычно:

R> for(k in 1:2){print(a[,,k])} 
+0

Или для «простых» функций даже не нужен цикл, благодаря векторизации R. –

2

Остерегайтесь терминологии :-). Как указывает CSGillespie, вы можете определить массив N-ранга в R. В качестве альтернативы вы можете создать переменную list, каждая запись которой содержит матрицу. Преимущество последнего заключается в том, что матрицы могут иметь разные размеры. Недостаток заключается в том, что создание эмоционального состояния может быть более болезненным.

E.g.

mat1 <- matrix(NA, 3,5) 
mat2 <- matrix(NA, 4,7) 
matlist <- list(mat1=mat1,mat2=mat2) 
Смежные вопросы