使用向量从4d数组中提取特定点

时间:2019-06-06 17:28:21

标签: arrays r multidimensional-array vector

我有一个4维数组,需要从中提取特定值。具体值来自2个稳定尺寸和两个变化的尺寸。请参见示例以获取更好的描述。

 set.seed(5)
 array <- array(dim=c(20,3,10,5))
 array[,,,] <- runif(3000,0,50)

所以我需要从该数组中提取特定值。维度2的值将始终为3,维度4的将始终为1,但其他值将更改。我有各自需要的向量,但是我不知道如何将它们组合在一起。

 v1 <- c(1, 7, 10, 11, 3, 6, 20, 5, 5, 4)
 v2 <- c(1, 1, 4, 6, 2, 3, 9, 8, 7, 8)

所以基本上我需要array [1,3,1,1],array [7,3,1,1],array [10,3,4,1],array [11,3,6,1]等等。

 > array[1,3,1,1]
 [1] 40.8038
 > array[7,1,1,1]
 [1] 26.398
 > array[10,3,4,1]
 [1] 7.784153
 > array[11,3,6,1]
 [1] 31.50343

是否可以使用v1和v2指定这些点?如果我做array [v1,3,v2,1],它给了我10x10的块,但是我只想要10个单独的值。

谢谢!

1 个答案:

答案 0 :(得分:1)

解决方案是使用索引矩阵,每组索引一行:

array[cbind(v1,3,v2,1)]

# [1] 40.803803 38.007126  7.784153 31.503427 28.722716 32.444720 16.527393 14.420411
# [9] 41.935482 36.993050