2013-02-20 46 views
5

Tôi muốn tạo một mảng ma trận theo cách mà trước tiên tôi tạo một mảng ma trận k với giá trị NA và sau đó lặp qua k và cập nhật từng ma trận k'th qua mảng.R tạo một mảng ma trận

Mọi đề xuất?

Trả lời

8

Tôi có thể bị thiếu điểm, nhưng sẽ không:

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 

cung cấp cho bạn những gì bạn muốn? Sau đó, bạn có thể lặp lại như bình thường:

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

Hoặc đối với các chức năng "đơn giản", thậm chí không cần vòng lặp, nhờ vectơ hóa của R. –

2

Hãy coi chừng thuật ngữ :-). Như CSGillespie chỉ ra, bạn có thể xác định một mảng hạng N trong R. Ngoài ra, bạn có thể tạo biến số list, mỗi mục nhập chứa một ma trận. Ưu điểm của thứ hai là các ma trận có thể có các kích thước khác nhau. Điểm bất lợi là nó có thể khá đau đớn hơn để tạo ra trạng thái inital.

Ví dụ:

mat1 <- matrix(NA, 3,5) 
mat2 <- matrix(NA, 4,7) 
matlist <- list(mat1=mat1,mat2=mat2)