2015-04-20 3 views
1

У меня есть два массива: P и обр, размерность которого являются:Использование массива в качестве субиндекс большего массива размерности

> dim(arr) 
[1] 8 2 

> dim(P) 
[1] 3 8 2 

Затем обр имеет значения

> arr 
     [,1][,2] 
[1,] 2 1 
[2,] 1 2 
[3,] 1 3 
[4,] 1 4 
[5,] 2 5 
[6,] 2 6 
[7,] 2 7 
[8,] 2 8 

, которые предназначены для быть субиндекром P-матрицы. Итак, что я хотел бы сделать что-то вроде этого

P[1,arr] 

для получения значений

P[1,2,1] 
P[1,1,2] 
P[1,1,3] 
... 
P[1,2,8] 

, но P [1, обр] дает ошибку

Error in P[1, arr] : incorrect number of dimensions 

Как могу ли я использовать arr как субиндекс P?

+0

@BrodieG, который решил мою проблему. Благодаря!! – user3889486

ответ

3

Попробуйте использовать cbind для создания матрицы индексирования:

P[cbind(1, arr)] 

хотя обратите внимание, возможно, потребуется изменить порядок столбцов в arr так, что второй столбец приходит первым, так как ваше второе измерение является одним из 8 возможных значений , Так может быть:

P[cbind(1, arr[, 2:1])] 
Смежные вопросы