我有一个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个单独的值。
谢谢!
答案 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