2016-04-21 4 views
0

У меня есть трехмерный массив и векторИзвлечение матрицы из многомерного массива

A = array(1:24, dim = 2:4) 
v = c(3,2,1,2) 

Я хотел бы создать двухмерную матрицу, где мы выбираем только один столбец из каждого 3-го измерения «блок "i - тот, который был проиндексирован v[i]. Например, первый столбец выходной матрицы должен быть третьим столбцом A[,,1], потому что v[1] = 3.

+1

является 'разреш <-матрица (Ncol = длина (V), nrow = тусклый (А) [1])' 'следуют за (я в 1: length (v)) res [, i] <- A [, v [i], i] 'ваш желаемый результат? – nicola

+0

помогите? –

+0

Да, спасибо, оба! – Hatshepsut

ответ

1

plyr для спасения, чтобы преобразовать массив в список матриц. Затем можно приступать к экстракции через колонку Map:

library(plyr) 

do.call(cbind, Map(function(m,i) m[,i], alply(A, 3), v)) 
#  1 2 3 4 
#[1,] 5 9 13 21 
#[2,] 6 10 14 22 
Смежные вопросы