我有以下数据类型
dim(sampleData$mod)
# [1] 5 9 6 7 73 144
我需要提取这些数据
t1 <- as.vector(sampleData$mod[,,,1,,])
问题是我需要一个函数来从任何变量维
中获取数据我想要这样的一些:
sampleData$mod[tmp]
我有这个
sampleData$mod[,,,1,,]
答案 0 :(得分:0)
最简单的解决方案是运行6个嵌套for
循环(每个维度一个),然后将值一个接一个地放在向量vec
上。然后你做sampleData$mod=vec
。
请注意,您应该将向量初始化为vec=rep(0, 5*9*6*7*73*144)
,然后将值放入其中,而不是执行c(vec, new_value)
,否则由于向量调整大小,您将面临巨大的开销。
答案 1 :(得分:0)
根据我对问题的理解,以下内容可能会有所帮助:
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