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
假设我有一些数组,但维度是先验未知的(不一定是 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