使用数组作为更大维数组的子索引

时间:2015-04-20 16:11:31

标签: r multidimensional-array

我有两个数组:P和arr,其维度为:

> dim(arr)
[1] 8 2

> dim(P)
[1] 3 8 2

然后,arr有值

> 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,arr]给出错误

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

如何使用arr作为P的子索引?

1 个答案:

答案 0 :(得分:3)

尝试使用cbind创建索引矩阵:

P[cbind(1, arr)]

虽然注意您可能需要更改arr的列顺序,以便第二列首先出现,因为您的第二个维度是具有8个可能值的维度。也许吧:

P[cbind(1, arr[, 2:1])]