R 索引数组的数据类型是什么?

What is the data type by which R indexes arrays?

假设我有一些数组,但维度是先验未知的(不一定是 3,如下例所示)

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

我还有一个长度等于这个数组维度的输入向量

pos=c(2,1,3)

基于这个输入向量,我想return

A[1:2,1:1,1:3]

我怎样才能自动执行此操作?换句话说,我必须将什么样的数据X传递给A[],这样R才能理解我想要什么。

例如,X 是一个列表是行不通的:

A[lapply(pos,function(x) 1:x)]

可以创建一个函数来为给定的数组和向量提取所需的矩阵。

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

pos = c(2,1,3)

array_extractor = function(array, vector) {

   result = array[1:vector[1], 1:vector[2], 1:vector[3]]
   result

}

array_extractor(A, pos)
pos = lapply(pos, seq)
do.call(`[`, c(list(A), pos))

     [,1] [,2] [,3]
[1,]    1    7   13
[2,]    2    8   14