2012-11-19 36 views
4

这应该很简单,但我的努力与unlistmatrix失败。R:如何将结构化列表导出为ex​​cel

如何将以下列表导出到保留相同结构的Excel表单中?

list(structure(list(rob = c(0.500395231401348, 0.839314035292317, 
0.710466394967634, 0.61574235723249)), .Names = "rob", row.names = c(NA, 
4L), class = "data.frame"), structure(list(rob = c(0.66163340478379, 
0.591092739290417, 0.554484883310407, 0.78199375944331, 0.489388775242085 
)), .Names = "rob", row.names = c(NA, 5L), class = "data.frame"), 
    structure(list(rob = c(0.697897964659196, 0.480394119894312, 
    0.514294379103359, 0.626971885076273, 0.77938643423231, 0.618135503224601 
    )), .Names = "rob", row.names = c(NA, 6L), class = "data.frame")) 

谢谢!

+1

您的对象是一列data.frames,Excel表是表。你想如何输出?您生成的表格的一列中的列表的每个data.frame? – Beasterfield

+0

我看到正确的行数是不同的?在不存在的元素的出口中包含什么? – rlegendi

+0

我认为如果excel中的输出看起来像R中的输出,即3个向量之后就足够了。 – Rico

回答

8

你可以做到这一点:

  1. 填充与NA每个向量使所有向量长度相同
  2. 使用do.call(rbind, ...)创建一个数据帧

像这样:

xx <- lapply(x, unlist) 
max <- max(sapply(xx, length)) 
do.call(rbind, lapply(xx, function(z)c(z, rep(NA, max-length(z))))) 

      rob1  rob2  rob3  rob4      
[1,] 0.5003952 0.8393140 0.7104664 0.6157424  NA  NA 
[2,] 0.6616334 0.5910927 0.5544849 0.7819938 0.4893888  NA 
[3,] 0.6978980 0.4803941 0.5142944 0.6269719 0.7793864 0.6181355 

然后它是一个简单的使用write.table()或您最喜爱的导出为ex​​cel方法。