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

bur*_*w78 3 excel r xlsx xlconnect

我想将不同大小的对象列表导出到单个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)
Run Code Online (Sandbox Code Playgroud)

现在,mat1简单地写在mat2的顶部.

eip*_*i10 5

我不熟悉,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)
Run Code Online (Sandbox Code Playgroud)

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

wb = createWorkbook()
sheet = createSheet(wb, "data")
Run Code Online (Sandbox Code Playgroud)

写下每个矩阵,一个在另一个之下,在其间跳过一行.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")
Run Code Online (Sandbox Code Playgroud)

以下是生成的Excel工作表的屏幕截图:

在此输入图像描述