我想在 R 中将列表转换为数组,如下所示。数据中的每个元素恰好是一个 3 维数组,但类是“列表”,而所需的输出是类“数组”。
输出是类列表:
>data
$ind1
[,1] [,2] [,3
[1,] 57.71157 1.95974925 269.881
[2,] 68.61496 -3.63548833 269.836
[3,] 70.55135 0.31777057 266.963
$ind2
[,1] [,2] [,
[1,] 61.31171 3.733692169 274.02
[2,] 65.56570 -5.445514560 271.48
[3,] 68.91904 -3.202808022 269.16
$ind3
[,1] [,2] [,3]
[1,] 57.40768 -3.343789 253.6673
[2,] 62.94523 -13.065327 253.8842
[3,] 66.52199 -12.943937 250.7863
期望的输出是类数组:
>data$ind
, , ind1
[,1] [,2] [,3]
[1,] 57.71157 1.95974925 269.8813
[2,] 68.61496 -3.63548833 269.8362
[3,] 70.55135 0.31777057 266.9638
, , ind2
[,1] [,2] [,3]
[1,] 61.31171 3.733692169 274.0263
[2,] 65.56570 -5.445514560 271.4852
[3,] 68.91904 -3.202808022 269.1676
, , ind3
[,1] [,2] [,3]
[1,] 57.40768 -3.343789 253.6673
[2,] 62.94523 -13.065327 253.8842
[3,] 66.52199 -12.943937 250.7863
最佳答案
最简单的方法是使用 abind
包:
library(abind)
test_mat <- lapply(1:3, function(x) matrix(runif(12), nrow=3, ncol=4))
abind(test_mat, along=3)
, , 1
[,1] [,2] [,3] [,4]
[1,] 0.9493937 0.7062080 0.2965067 0.4881118
[2,] 0.1280332 0.2595627 0.6954514 0.7917190
[3,] 0.3611595 0.2219669 0.7363357 0.3025325
, , 2
[,1] [,2] [,3] [,4]
[1,] 0.5407829 0.70890818 0.7959612 0.4637777
[2,] 0.7743566 0.07994314 0.2751361 0.7770016
[3,] 0.5873859 0.55288233 0.5701440 0.5282996
, , 3
[,1] [,2] [,3] [,4]
[1,] 0.34326044 0.6389373 0.7563659 0.83533279
[2,] 0.06685802 0.7410194 0.1814166 0.91156363
[3,] 0.86907376 0.4374175 0.1335296 0.02717944
关于arrays - 如何将列表转换为 R 中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51817048/