您无需重新发明轮子,只需对其进行修改即可到达目的地。
interleave“gdata”中的函数首先...允许您指定data.frame要放在一起的多个 s 或矩阵。该函数的前几行如下所示:
head(interleave)
# 
# 1 function (..., append.source = TRUE, sep = ": ", drop = FALSE) 
# 2 {                                                              
# 3     sources <- list(...)                                       
# 4     sources[sapply(sources, is.null)] <- NULL                  
# 5     sources <- lapply(sources, function(x) if (is.matrix(x) || 
# 6         is.data.frame(x)) 
你可以像我在这个 Gist中所做的那样重写第 1 行和第 3 行来创建一个list版本interleave(在这里,我称之为Interleave)
head(Interleave)
#                                                                     
# 1 function (myList, append.source = TRUE, sep = ": ", drop = FALSE) 
# 2 {                                                                 
# 3     sources <- myList                                             
# 4     sources[sapply(sources, is.null)] <- NULL                     
# 5     sources <- lapply(sources, function(x) if (is.matrix(x) ||    
# 6         is.data.frame(x)) 
它有效吗?
l <- list(a=matrix(1:4,2),b=matrix(5:8,2), c=matrix(9:12,2))
Interleave(l)
#   [,1] [,2]
# a    1    3
# b    5    7
# c    9   11
# a    2    4
# b    6    8
# c   10   12