我有一个data.frame的列表,我想在excel中输出到他们自己的工作表.我可以轻松地将单个数据框保存到它自己的excel文件中,但我不确定如何将多个数据框保存到同一个excel文件中的自己的工作表中.
library(xlsx)
write.xlsx(sortedTable[1], "c:/mydata.xlsx")
Run Code Online (Sandbox Code Playgroud)
Rom*_*rik 12
为每个列表元素指定工作表名称.
library(xlsx)
file <- paste("usarrests.xlsx", sep = "")
write.xlsx(USArrests, file, sheetName = "Sheet1")
write.xlsx(USArrests, file, sheetName = "Sheet2", append = TRUE)
Run Code Online (Sandbox Code Playgroud)
@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)
Run Code Online (Sandbox Code Playgroud)
假设您有一个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)
Run Code Online (Sandbox Code Playgroud)
小智 8
以下代码完美运行,来自:https ://rpubs.com/gbganalyst/RdatatoExcelworkbook
packages <- c("openxlsx", "readxl", "magrittr", "purrr", "ggplot2")
if (!require(install.load)) {
install.packages("install.load")
}
install.load::install_load(packages)
list_of_mydata
write.xlsx(list_of_mydata, "Excel workbook.xlsx")
Run Code Online (Sandbox Code Playgroud)
这是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)
Run Code Online (Sandbox Code Playgroud)
.. 但是,openxlsx 也可以为此使用它的函数 openxlsx::write.xlsx,因此您只需提供带有数据帧列表和文件路径的对象,openxlsx 足够聪明,可以在xlsx 文件。我在这里使用 Map() 发布的代码是如果您想以特定方式格式化工作表。
假设您的数据框列表被称为 ,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
}
Run Code Online (Sandbox Code Playgroud)
G
| 归档时间: |
|
| 查看次数: |
3672 次 |
| 最近记录: |