我有一个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)。
任何有效的基于申请的功能吗?
答案 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