我需要在R和Matlab之间双向导出一些数据,而Matlab更喜欢数组。我试图在转换为Matlab之前将我的R嵌套列表数据结构转换为多维数组,以使切片保持不变。这就是我目前正在做的事情(类似于):
nestlist <- lapply(1:2, function(x) lapply(1:3, function(y) lapply(1:4, function(z) paste(x, y, z, sep = ""))))
unlist(nestlist)
[1] "111" "112" "113" "114" "121" "122" "123" "124" "131" "132" "133" "134"
[13] "211" "212" "213" "214" "221" "222" "223" "224" "231" "232" "233" "234"
> length(nestlist)
[1] 2
> length(nestlist[[1]])
[1] 3
> length(nestlist[[1]][[1]])
[1] 4
如您所见,尺寸为2x3x4,符合预期。现在:
> ar <- array(unlist(nestlist), c(2, 3, 4))
> nestlist[[1]][[1]][[1]]
[1] "111"
> ar[1,1,1]
[1] "111"
到目前为止,情况还不错,但是....
> nestlist[[2]][[2]][[3]]
[1] "223"
> ar[2,2,3]
[1] "214"
某种方式,使用unlist解析列表时,数组的创建顺序不同。如何有效地处理这个问题,保留索引顺序和维数?如果可能的话,我想避免使用嵌套sapplies等(手动分析)。