2010-07-07 20 views
24

Tôi tự hỏi làm thế nào để sử dụng áp dụng trên một mảng đa chiều. Tôi có một số thông tin như sau:Sử dụng áp dụng trên một mảng đa chiều trong R

A <- array(0, c(2, 2, 5)) 
for(i in 1:5) { 
    A[, , i] <- matrix(rnorm(4), 2, 2) 
} 

Tôi muốn lấy mức trung bình của những lát đó để lấy một ma trận 2 x 2. Bất kỳ cách nào tôi đưa ra là khá kludgy.

Tôi đã hy vọng để có thể sử dụng được áp dụng, như tôi sẽ nếu tôi muốn tiếng nói trung bình của các cột của một ma trận:

B <- matrix(rnorm(10), 5, 2) 
B.mean <- apply(B, 2, mean) 

Nhưng điều này dường như không làm việc theo cách tôi nghĩ rằng nó có thể với mảng 3D:

A.mean <- apply(A, 3, mean) 

Tôi đánh giá cao đề xuất của bạn.

Trả lời

28
A.mean <- apply(A, c(1,2), mean) 
+0

Hoàn hảo! Và nó đã có ngay trong tập tin trợ giúp cho mảng, nhưng tôi đã không nhìn thấy nó cho đến khi bạn chỉ ra nó, thậm chí đã nhìn vào nó. Cảm ơn bạn! – TJB

+8

Nói chung, tham số 'margin' của' apply' phải là một vectơ của các chiều mà bạn muốn giữ lại, chứ không phải là sự sụp đổ. – mbq

+1

Điều gì về: mean.data.frame (A)? –

Các vấn đề liên quan