2013-01-12 54 views
2

我正在使用sink()函數將R輸出打印到excel /文本文件。我的程序輸出太大了。我在Excel /文本輸出文件的末尾發現了一條消息如何將大數據導出到Excel中

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

另外我還有一個以上的大輸出要打印。我也希望他們在一個excel文件的單獨(不同)表單上。

實際上,輸出爲矩陣形式,隨着循環值的增加,矩陣的行和列也增加。由於行和列號的不同,函數append不起作用。爲了避免這個錯誤,我使用if條件,並分別使用rbind來處理相似的矩陣。但是通過雙循環迭代超過5千次(並且該方法也重複),所以不可能寫入1000的ifrbind條件並將它們保存到單獨的工作表和文件中。

回答

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 
+0

實際上,輸出爲矩陣形式,隨着循環值的增加,矩陣的行和列也增加。由於行和列號的不同,函數append不起作用。爲了避免這個錯誤,我使用'if'條件並分別使用'rbind'處理類似的矩陣。但是通過雙循環迭代超過5千次(並且該方法也重複),因此不可能寫入1000個「if」和「rbind」條件並將它們保存到單獨的工作表和文件中。 –

+0

等待你的回覆。 –

+0

另一個海報說,你的評論沒有意義,沒有上下文。 –

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") 
+0

我有一個以上的程序不同的輸出,我可以將它們保存到不同的工作表中。另外我的數據是通過雙循環生成的。 –

+0

這會導出一個csv文件,您可以在excel中導入,導入時可以要求excel將其添加爲新工作表。只需將每個數據幀導出到一個新文件中 –

+0

但是通過這個,我只獲得了通過循環生成的最後一個值。 –