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

Bar*_*Yeo 5 excel r xlsx

我有一个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”。我建议将此答案更改为更简化的内容:`library(openxlsx); write.xlsx(list_of_mydata, "Excel 工作簿.xlsx")`。 (6认同)
  • 还值得注意的是,“write.xlsx”将使用列表中的名称作为输出 Excel 文件中的工作表名称。 (2认同)

emi*_*Bri 6

这是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() 发布的代码是如果您想以特定方式格式化工作表。


Pav*_*ive 5

假设您的数据框列表被称为 ,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

  • 如果你用“for (i in 1:length(Lst))”开始循环,真的需要“counter”吗?看起来像是为“for 循环”设置的“while 循环”。 (2认同)