R.在Excel中将列表导出到单个工作表

我想导出一个不同大小的对象列表到一个单一的Excel工作表。 换句话说,我想要一个matrix出现,然后在下面的matrix出现。 这是一个使用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的顶部。

我不熟悉XLConnect但是这里有一个使用xlsx包的方法。 关键是要跟踪已经写入工作表的matrix占用的累积行数,以免覆盖它们。

 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) 

在该工作簿中创build工作簿和工作表:

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

写下每个matrix,一个在另一个之下,跳过一行。 r是一个行计数器,我们用它来确定放置每个连续matrix的起始行。

 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工作表的屏幕截图:

在这里输入图像说明