将列表导出到Excel单个工作表

4

我想将一个不同尺寸的对象列表导出到单个Excel表格中。换句话说,我想要一个矩阵显示在上面,然后在下面是下一个矩阵。这里有一个使用XLConnect的简单示例:

mat1<-matrix(c(0,1,2,3),nrow=2,ncol=2)

mat2<-matrix(c(0,1,2,3,4,5),nrow=2,ncol=3)

list<-list(mat1,mat2)

wb<-loadWorkbook("XLConnectExample1.xlsx",creat=TRUE)
createSheet(wb,name="sheet")
writeWorksheet(wb,list,sheet="sheet")
saveWorkbook(wb)

目前,mat1 简单地覆盖在 mat2 的顶部。

1个回答

6

我对XLConnect不是很熟悉,但这里有一种使用xlsx包的方法。关键是要跟踪已经写入工作表的矩阵所占用的累计行数,以便您不会覆盖它们。

library(xlsx)

# Fake data
mat1<-matrix(c(0,1,2,3),nrow=2,ncol=2)
mat2<-matrix(c(0,1,2,3,4,5),nrow=2,ncol=3)
mat3 = matrix(1:8, nrow=4)

mat.list<-list(mat1,mat2,mat3)

创建一个工作簿和其中的一张工作表:
```html

创建一个工作簿和其中的一张工作表:

```
wb = createWorkbook()
sheet = createSheet(wb, "data")

将每个矩阵写在下一个矩阵的下方,中间留一个空行。 r 是我们用来确定放置每个后续矩阵的起始行的行计数器。

r = 1
for (i in 1:length(mat.list)) {

  addDataFrame(mat.list[[i]], sheet, col.names=FALSE, row.names=FALSE, startRow=r)

  r = r + nrow(mat.list[[i]]) + 1

}

saveWorkbook(wb, "test.xlsx")

这是生成的Excel工作表的截图: 图片描述

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