将3D数组转换为列表列表

时间:2014-10-23 01:18:15

标签: arrays r list

我有一个3D数组,例如:

arr <- array(dim = c(10, 4, 3), data = rep(rnorm(10), 120))
dimnames(arr) <- list(itr = NULL, chain = c("c1","c2","c3","c4"), param = c("alpha","beta","gamma"))

并且我希望将其转换为列表,其中每个元素都是一个param元素(即,此列表的长度为3),每个列表元素是另一个列表,其中每个元素都是一个向量长度10(itr)对应于链元素(即,此列表的长度= 4)。

任何有效的基于申请的功能吗?

1 个答案:

答案 0 :(得分:2)

这可能适合你

a <- apply(arr, 3, function(x) c(as.data.frame(x)))

然后我们可以稍微看一下结果的属性:

lapply(a, names)
# $alpha
# [1] "c1" "c2" "c3" "c4"
#
# $beta
# [1] "c1" "c2" "c3" "c4"
#
# $gamma
# [1] "c1" "c2" "c3" "c4"
unique(rapply(a, length))
# [1] 10