data.frame到个人excel工作表的列表 - R.

问题描述 投票:5回答:3

我有一个data.frame的列表,我想在excel中输出到他们自己的工作表。我可以轻松地将单个数据帧保存到它自己的excel文件中,但我不确定如何将多个数据帧保存到同一个excel文件中的自己的工作表中。

library(xlsx)
write.xlsx(sortedTable[1], "c:/mydata.xlsx")
r excel xlsx
3个回答
10
投票

为每个列表元素指定工作表名称。

library(xlsx)
file <- paste("usarrests.xlsx", sep = "")
write.xlsx(USArrests, file, sheetName = "Sheet1") 
write.xlsx(USArrests, file, sheetName = "Sheet2", append = TRUE)

@flodel建议的第二种方法是使用addDataFrame。这或多或少是来自所述功能的帮助页面的示例。

file <- paste("usarrests.xlsx", sep="")
wb <- createWorkbook()
sheet1 <- createSheet(wb, sheetName = "Sheet1")
sheet2 <- createSheet(wb, sheetName = "Sheet2")

addDataFrame(USArrests, sheet = sheet1)
addDataFrame(USArrests * 2, sheet = sheet2)
saveWorkbook(wb, file = file)

假设您有一个data.frames列表和一个工作表名称列表,您可以成对使用它们。

wb <- createWorkbook()
datas <- list(USArrests, USArrests * 2)
sheetnames <- paste0("Sheet", seq_along(datas)) # or names(datas) if provided
sheets <- lapply(sheetnames, createSheet, wb = wb)
void <- Map(addDataFrame, datas, sheets)
saveWorkbook(wb, file = file)

0
投票

假设你的数据框列表叫做Lst,你要保存的工作簿叫做wb.xlsx。然后你可以使用:

library(xlsx)
counter <- 1
for (i in length(Lst)){
   write.xlsx(x=Lst[[i]],file="wb.xlsx",sheetName=paste("sheet",counter,sep=""),append=T)
   counter <- counter + 1
}

G


0
投票

这是openxlsx的解决方案:

## create data;
dataframes <- split(iris, iris$Species)

# create workbook
wb <- createWorkbook()

#Iterate the same way as PavoDive, slightly different (creating an anonymous function inside Map())
Map(function(data, nameofsheet){     

    addWorksheet(wb, nameofsheet)
    writeData(wb, nameofsheet, data)

}, dataframes, names(dataframes))

## Save workbook to excel file 
saveWorkbook(wb, file = "file.xlsx", overwrite = TRUE)

..但是,openxlsx也可以使用write.xlsx,所以你可以给对象提供你的数据帧列表和文件路径,而openxlsx足够聪明,可以完成其余的...上面的解决方案与Map( )是否要以特定方式格式化工作表。

© www.soinside.com 2019 - 2024. All rights reserved.