Tôi có những gì tôi nghĩ sẽ là một vấn đề đơn giản, nhưng tôi đã không thể tìm thấy câu trả lời thích hợp. Tôi có một mảng đa chiều v[x,y,z]
và tôi muốn áp dụng hàm cho mảng dọc theo tham số z bằng biến nhóm (nhóm). Dưới đây là một ví dụ (R):Áp dụng một hàm vào mảng đa chiều với biến nhóm
v<-1:81
dim(v)<-c(3,3,9)
group<-c('a','a','a','b','b','b','c','c','c')
Cho rằng các biến nhóm có 3 cấp (một, b và c), kết quả (ra) Tôi đang tìm là một mảng có kích thước 3x3x3. Tôi có thể lấy ra bằng cách sử dụng mã sau đây cho ví dụ trên:
out1<-apply(v[,,c(1:3)],c(1,2),sum)
out2<-apply(v[,,c(4:6)],c(1,2),sum)
out3<-apply(v[,,c(7:9)],c(1,2),sum)
library(abind)
out<-abind(out1, out2, out3, along=3)
Câu hỏi của tôi là nếu có một phương tiện nói chung có được kết quả trên, có thể được áp dụng cho mảng chiều lớn và vectơ nhóm dài.
Đưa ra nhận xét của bạn bên dưới câu trả lời của @krlmlr sẽ tốt hơn nếu bạn mô tả chính xác hơn dữ liệu bạn đang làm việc. Thật khó chịu khi phát triển một câu trả lời để được cho biết rằng dữ liệu bạn có là rất khác với những gì bạn mô tả * sẽ không hoạt động *! –
Vì bạn đang xử lý dữ liệu viễn thám, nên bạn có thể xem xét gói 'raster' và các hàm' stack' và 'calc' được tối ưu hóa cho loại dữ liệu này. –