2

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

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

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

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

4

2 回答 2

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
于 2013-01-12T10:51:21.160 回答
5

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

## 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")
于 2013-01-12T10:30:36.560 回答