arrays - 列出三维数组

标签 arrays r list

我的问题对你们中的很多人来说可能是微不足道的,但是经过长时间的互联网搜索,我仍然没有下列问题的答案:

如何将三维数组转换为“三维”列表?

假设我有以下内容:

A1 <- matrix(runif(12),4,3)
A2 <- matrix(runif(12),4,3)
A3 <- matrix(runif(12),4,3)

MyList  <- list(A1,A2,A3)

MyArray <- array(NA,c(4,3,3))
MyArray[,,1] <- A1
MyArray[,,2] <- A2
MyArray[,,3] <- A3


有没有一种方法可以将MyArray转换为与MyList具有“相同结构”的列表?

非常感谢您的帮助!
最好,罗曼

最佳答案

为了好玩(因为我来晚了),这是另一个仅使用基数R的表达式。就像@joran一样,它是可编程的,从某种意义上说,您可以轻松地沿任意给定的维度n进行拆分:

split.along.dim <- function(a, n)
  setNames(lapply(split(a, arrayInd(seq_along(a), dim(a))[, n]),
                  array, dim = dim(a)[-n], dimnames(a)[-n]),
           dimnames(a)[[n]])

identical(split.along.dim(MyArray, n = 3), MyList)
# [1] TRUE


如果有的话,它也会保留所有的名字,例如:

dimnames(MyArray) <- Map(paste0, letters[seq_along(dim(MyArray))],
                                 lapply(dim(MyArray), seq))
split.along.dim(MyArray, n = 3)

关于arrays - 列出三维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20198751/

相关文章:

r - ggplot 扩展图例颜色条

r - 获取新值开始的行索引

performance - sorted 和 sortBy 的区别

c# - 将托管 C# 列表返回到非托管 C++ 代码

c++ - union 类型的数组可以转换为事件类型的指针吗?

java - 在循环内分配数组变量

r - 使用 data 中指定的颜色名称作为 geom_bar 中的填充颜色

ios - 有没有更好的方法在 SwiftUI 中创建多列(数据表) ListView

c - 如何修改传递给函数的二维数组?

c - 数组到指针的转换是否消除了间接运算符的评估?