Write.xlsx运行速度非常慢,我可以加快速度吗?

Write.xlsx运行速度非常慢,我可以加快速度吗?,r,package,rstudio,R,Package,Rstudio,我一直在使用Write.xlsx将我的结果导出到Excel工作簿的每个选项卡中,它的工作方式与我希望的一样,只是运行异常缓慢。我花了9个半小时运行了大约120行write.xlsx。以下是我使用的代码,以“水果”为例: forecast_custom <- function(selected_fruit) { df_sub <- subset(FruitData, Fruit == selected_fruit) ts_sub <- ts(df_sub$avg) f

我一直在使用Write.xlsx将我的结果导出到Excel工作簿的每个选项卡中,它的工作方式与我希望的一样,只是运行异常缓慢。我花了9个半小时运行了大约120行write.xlsx。以下是我使用的代码,以“水果”为例:

forecast_custom <- function(selected_fruit) {
  df_sub <- subset(FruitData, Fruit == selected_fruit)
  ts_sub <- ts(df_sub$avg)
  forecast(auto.arima(ts_sub), h = 12)
} 
假设这些预测和write.xlsx(我从write.xlsx切换到write.xlsx2,速度仍然很慢)持续了100行。为什么它会跑得这么慢


谢谢

您可以尝试从
readr
软件包中编写
write_csv()
(尽管这同样表明您将创建多个csv文件,而不是单个工作簿)。它的速度非常快,大约是write.csv的两倍

filename='ForecastModel.xlsx`
如果os.path.exists(filename):#engine=xlsxwriter仅支持写入,无论是模式='a'还是模式='w'
使用pd.ExcelWriter(文件名,mode='a')作为编写器:
ForecastApple.to_excel(writer,engine='xlsxwriter',sheet\u name='Apple',encoding='utf8',index=False)
ForecastBanana.to_excel(writer,engine='xlsxwriter',sheet\u name='Banana',encoding='utf8',index=False)
否则:#如果没有,则创建“ForecastModel.xlsx”。
使用pd.ExcelWriter(文件名,mode='w+')作为编写器:
ForecastApple.to_excel(writer,engine='xlsxwriter',sheet\u name='Apple',encoding='utf8',index=False)
ForecastBanana.to_excel(writer,engine='xlsxwriter',sheet\u name='Banana',encoding='utf8',index=False)
根据jmcnamara的回答:

Pandas默认使用OpenPyXL来写入xlsx文件,这可能比用于写入xls文件的xlwt模块慢

改用XlsxWriter作为xlsx输出引擎


使用
write.xlsx()<来自
writexl
包的code>write_xlsx()
非常有效,而且速度更快!而且它可以很好地处理tibbles


有关更多信息,请参见
data.table
软件包中的
fwrite()
。输出为.csv,但速度非常快!还有一些可选的R包(更不用说Python了),包括writexl、XLConnect
ForecastApple <-  forecast_custom("Apple")
ForecastBanana <-  forecast_custom("Banana")
write.xlsx2(ForecastApple, file="ForecastModel.xlsx", sheetName="Apple", 
row.names=FALSE)
write.xlsx2(ForecastBanana, file="ForecastModel.xlsx", sheetName="Banana", 
append=TRUE, row.names=FALSE)