如何告诉 write.table 将每个列表项的数据保存在单独的行中?

How do I tell write.table to save the data of each list item in a separate row?

假设我有这个数组:

 my.array <- array(1:48, dim=c(3,4,4))

在做了一些笨拙的转换后,我得到了以下数据:

tarray <- apply(my.array, c(1,3), t)
listarray <-apply(tarray, 3, as.list)
ulist <- lapply(listarray, unlist)
trlist <- lapply(ulist, t)

[[1]]
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    1    4    7   10    2    5    8   11    3     6
     [,11] [,12]
[1,]     9    12

[[2]]
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]   13   16   19   22   14   17   20   23   15    18
     [,11] [,12]
[1,]    21    24

[[3]]
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]   25   28   31   34   26   29   32   35   27    30
     [,11] [,12]
[1,]    33    36

[[4]]
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]   37   40   43   46   38   41   44   47   39    42
     [,11] [,12]
[1,]    45    48

我想保存它以便每个列表项都有自己的行,即

1 4 7 10 2 5 8 11 3 6 9 12 
13 16 19 22 14 17 20 23 15 18 21 24 
25 28 31 34 26 29 32 35 27 30 33 36
37 40 43 46 38 41 44 47 39 42 45 48

但是当我使用 write.table(trlist, file="test", sep="/t", row.names=FALSE,col.names = FALSE, quote = FALSE) 它只是将所有内容保存在一行中

我们可以通过循环遍历第三个维度来完成此操作,沿该维度提取 'my.array',转置,连接到 vector 并通过 rbinding 将其转换为单个矩阵list 个元素

do.call(rbind, lapply(seq(dim(my.array)[3]), function(i) c(t(my.array[,,i]))))
#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
#[1,]    1    4    7   10    2    5    8   11    3     6     9    12
#[2,]   13   16   19   22   14   17   20   23   15    18    21    24
#[3,]   25   28   31   34   26   29   32   35   27    30    33    36
#[4,]   37   40   43   46   38   41   44   47   39    42    45    48

或者另一种方法是使用 aperm 然后将其转换为 matrix

matrix(c(aperm(my.array, c(2, 1, 3))), nrow = 4, byrow = TRUE)