【问题标题】:How to Export Large data into Excel如何将大数据导出到 Excel
【发布时间】:2013-01-12 10:27:42
【问题描述】:

我正在使用sink() 函数将 R 输出打印到 excel/文本文件。我的程序输出太大。我在 Excel/文本输出文件的末尾发现了一条消息

[ reached getOption("max.print") -- omitted 5326 rows ] 

我还有不止一个大的输出要打印。我还希望它们在一个 excel 文件的单独(不同)表上。

其实输出是以矩阵的形式出现的,随着loop值的增加,方阵的行数和列数也会增加。由于行数和列数不同,函数append 不起作用。为避免此错误,我使用if 条件并分别使用rbind 处理类似矩阵。但是通过双循环有超过5000次迭代(并且该方法也重复),因此不可能编写1000个ifrbind条件并将它们保存到单独的工作表和文件中。

【问题讨论】:

    标签: r excel


    【解决方案1】:

    如果您不想要csv,您可以使用包xlsx,并且很容易保存多张表格,例如

    df1 <- data.frame(x=1:100, y=1:100)   # make data
    df2 <- data.frame(x=1:1000, y=1:1000) 
    
    library(xlsx)
    
    wb <- createWorkbook()         # create blank workbook
    sheet1 <- createSheet(wb, sheetName="mysheet1") # create different sheets
    sheet2 <- createSheet(wb, sheetName="mysheet2")
    addDataFrame(df1, sheet1)  # add data to the sheets
    addDataFrame(df2, sheet2)
    saveWorkbook(wb, "mysheets.xlsx")  # write the file with multiple sheets
    

    【讨论】:

    • 其实输出是以矩阵的形式出现的,随着loop值的增加,方阵的行数和列数也会增加。由于行数和列数不同,函数append 不起作用。为了避免这个错误,我使用了if 条件并分别使用rbind 处理类似的矩阵。但是通过双循环有超过5000次迭代(并且该方法也重复),因此不可能编写1000个ifrbind条件并将它们保存到单独的工作表和文件中。
    • 正如其他发帖者所说,您的评论没有意义,没有上下文。
    • 请给我发你的电子邮件,以便我将整个输出发送给你,让你理解。
    【解决方案2】:

    您可以将数据框写入 csv 文件,然后使用 write.csv 在 excel 中打开它(使用 ?write.csv 阅读其文档):

    ## To write a CSV file for input to Excel one might use
    x <- data.frame(a = I("a \" quote"), b = pi)
    write.table(x, file = "foo.csv", sep = ",", col.names = NA,
                qmethod = "double")
    

    【讨论】:

    • 我有多个不同的程序输出,我可以将它们保存到不同的工作表中吗?我的数据也是通过双循环生成的。
    • 这会导出您在 excel 中导入的 csv 文件,导入时您可以要求 excel 将其添加为新工作表。只需将每个数据框导出到一个新文件中
    • 但是通过这个,我只得到了通过循环生成的最后一个值。
    • 在循环中将值写入不同的文件,你最终会得到多个文件
    • 我不明白你的问题,当你建立你的矩阵时,你想什么时候保存到 csv ?
    猜你喜欢
    • 2013-10-06
    • 2016-06-30
    • 2012-06-14
    • 1970-01-01
    • 2023-03-23
    • 2016-09-20
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多