如何将R中数据框的数据附加到已存在的Excel工作表中

我在R中创build了数十个数据框,并希望将它们全部附加到Excel文件中的一个工作表中。

这里有两个网页我试图find一个答案(我没有10个名誉,所以我不能粘贴我访问过的所有四个网页url):

使用R软件包xlsx将数据写入Excel文件作者说:“您还可以使用addDataFrame函数的startRow和startCol参数将数据框添加到工作表中的特定起始位置。 这里是build议的代码:

workbook.sheets workbook.test addDataFrame(x = sample.dataframe, sheet = workbook.test, row.names = FALSE, startColumn = 4) # write data to sheet starting on line 1, column 4 saveWorkbook(workbook.sheets, "test.excelfile.xlsx") # and of course you need to save it. 

基于这个build议,这是我在RStudio上的尝试:

 addDataFrame(df_fl1, sheet = "AllData2.xlsx", startRow = 712) 

这是R的输出:工作表$ getWorkbook中的错误:$运算符对primefaces向量无效

我也试过这个页面:

关于读取和导入Excel文件到R的教程 “但是,如果要将数据框写入已存在的文件,可以执行以下命令:”

 write.xlsx(df, "<name and extension of your existing file>", sheetName="Data Frame" append=TRUE) write.xlsx(df_fl3, "AllData2.xlsx", sheetName="Salinity1", append=TRUE) 

我试过这个代码,它覆盖了已经在工作表中的数据。 如何将数据框中的数据附加到Excel工作表中?

追加到现有的Excel工作表是有点痛苦。 而是将所有Excel数据文件读入R,然后将它们合并到R中,然后将单个组合数据框写入新的Excel文件(或者,如果不需要将数据存入Excel,则写入csv文件工作簿)。 看到下面的代码简单的方法和困难的方式。

简单的方法:完成R所有工作,并最终保存单个组合的数据框

例如,如果您的所有Excel数据文件都在当前工作目录中,并且每个Excel文件中的第一个工作表都包含数据,则可以执行以下操作:

 library(xlsx) # Get file names file.names = list.files(pattern="xlsx$") # Read them into a list df.list = lapply(file.names, read.xlsx, sheetIndex=1, header=TRUE) 

然后将它们组合成单个数据框并写入磁盘:

 df = do.call(rbind, df.list) write.xlsx(df, "combinedData.xlsx", sheetName="data", row.names=FALSE) 

困难的方法:追加连续的dataframe到预先存在的Excel工作表

创build我们要写入Excel的数据框的列表(如上所述,在您的实际使用情况中,您将读取数据文件到R中的列表中)。 我们将使用内置的iris数据框来进行说明:

 df.list = split(iris, iris$Species) 

要将每个数据框写入单个Excel工作表,首先要创build一个Excel工作簿,并在工作表中写入数据:

 wb = createWorkbook() sheet = createSheet(wb, "data") # Add the first data frame addDataFrame(df.list[[1]], sheet=sheet, row.names=FALSE, startRow=1) 

现在使用循环附加所有剩余的dataframe。 每次增加startRow以便将下一个dataframe写入正确的位置。

 startRow = nrow(df.list[[1]]) + 2 for (i in 2:length(df.list)) { addDataFrame(df.list[[i]], sheet=sheet, row.names=FALSE, col.names=FALSE, startRow=startRow) startRow = startRow + nrow(df.list[[i]]) } 

保存工作簿:

 saveWorkbook(wb, "combinedData.xlsx") 

如果要在Excel工作表的各个部分中布局各种汇总表并使其对于演示文稿都很好,那么addDataFrame非常有用。 但是,如果您只是将原始数据合并到单个数据文件中,那么我认为在R中完成所有工作要简单得多,然后在最后将合并的数据框写入Excel工作表(或csv文件)。