R从函数访问多维矩阵数据

R从函数访问多维矩阵数据,r,R,我有以下数据类型 dim(sampleData$mod) # [1] 5 9 6 7 73 144 我需要提取这些数据 t1 <- as.vector(sampleData$mod[,,,1,,]) 我有这个 sampleData$mod[,,,1,,] 最简单的解决方案是为循环运行6个嵌套的(每个维度一个),然后将值一个接一个地放在向量vec上。然后执行sampleData$mod=vec 请注意,您应该将向量初始化为vec=rep(0,5*9*6*7*73*14

我有以下数据类型

dim(sampleData$mod)
# [1]   5   9   6   7  73 144
我需要提取这些数据

t1 <- as.vector(sampleData$mod[,,,1,,])
我有这个

sampleData$mod[,,,1,,]

最简单的解决方案是为循环运行6个嵌套的
(每个维度一个),然后将值一个接一个地放在向量
vec
上。然后执行
sampleData$mod=vec


请注意,您应该将向量初始化为
vec=rep(0,5*9*6*7*73*144)
,然后将值放入其中,而不是执行
c(vec,new_value)
,否则,由于向量大小调整,您将有巨大的开销。

根据我从问题中了解,以下内容可能会有所帮助:

ff = function(array, dims, inds)
{
    dimseq = lapply(dim(array), seq_len)
    dimseq[dims] = inds 
    do.call("[", c(list(array), dimseq))
}   

ar = array(seq_len(3*2*4*3*5), c(3,2,4,3,5))
identical(ar[, , 1, , ], ff(ar, 3, 1))
#[1] TRUE
identical(ar[, 1, , 2, 1], ff(ar, c(2, 4, 5), c(1, 2, 1)))
#[1] TRUE
identical(ar[, 1, , 2:3, c(1, 3)], ff(ar, c(2, 4, 5), list(1, 2:3, c(1, 3))))
#[1] TRUE
ff = function(array, dims, inds)
{
    dimseq = lapply(dim(array), seq_len)
    dimseq[dims] = inds 
    do.call("[", c(list(array), dimseq))
}   

ar = array(seq_len(3*2*4*3*5), c(3,2,4,3,5))
identical(ar[, , 1, , ], ff(ar, 3, 1))
#[1] TRUE
identical(ar[, 1, , 2, 1], ff(ar, c(2, 4, 5), c(1, 2, 1)))
#[1] TRUE
identical(ar[, 1, , 2:3, c(1, 3)], ff(ar, c(2, 4, 5), list(1, 2:3, c(1, 3))))
#[1] TRUE