如何将结构化列表导出到Excel

4

这应该很简单,但是我使用 unlistmatrix 的努力都失败了。

如何将以下列表导出到保留相同结构的 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
你的对象是一个由单列数据框组成的列表,Excel表格是表格。你希望输出的样子是什么?你希望将列表中的每个数据框放在结果表格的一列中吗? - Beasterfield
我看到的是行数不同吗?对于不存在的元素,导出应包括什么? - rlegendi
我认为如果Excel中的输出看起来像R中的输出,即三个向量依次排列,那就足够了。 - Rico
@Rico 然后使用Andrie的答案,通过XLConnect进行导出:http://stackoverflow.com/questions/11222027/exporting-a-matrix-in-r-to-an-excel-workbook/11222187#11222187 - Beasterfield
1个回答

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() 或你最喜欢的导出到Excel的方法了。

但是你如何保留列表名称以了解所有数据呢? - Javier Hernando

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接