如何将大数据导出到Excel中

时间:2013-01-12 10:27:42

标签: r excel

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

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

此外,我还有多个大输出要打印。我也希望它们在一个excel文件的单独(不同)工作表上。

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

2 个答案:

答案 0 :(得分:11)

如果您不想要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

答案 1 :(得分:5)

您可以将数据框写入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")