将列表的元素细分为单独的列

时间:2015-05-26 10:29:52

标签: r

我试图将列表中的元素细分为不同的列。

示例数据:

d <- list(c(1,2,3,4,5,6,7,8),c(1,2,3,4,5,6,7,8))

这是列表中1个元素的解决方案:

numrows <- (row(as.matrix(d[[1]])) %% 2)
TabNum <- sapply(1:2, function(x) as.matrix(d[[1]])[numrows==numrows[x,], ,drop=FALSE])

如何有效地完成整个清单?

这是开始,但后来我发现与sapply进行比较很麻烦,无论如何这是真正的黑客,必须有更整洁的解决方案。

numrows.list <- lapply(1:length(d), function(i) (row(as.matrix(d[[i]])) %% 2))

因此对于d列表,将有4列。所以期望的输出是:

      [,1] [,2] [,3] [,4] 
[1,]    1    2   1    2
[2,]    3    4   3    4
[3,]    5    6   5    6
[4,]    7    8   7    8

1 个答案:

答案 0 :(得分:2)

这似乎可以在这里工作

do.call(cbind, lapply(d, function(x) matrix(x, ncol = 2, byrow = TRUE)))
#      [,1] [,2] [,3] [,4]
# [1,]    1    2    1    2
# [2,]    3    4    3    4
# [3,]    5    6    5    6
# [4,]    7    8    7    8