如何将R的循环结果存储到csv文件中?

时间:2014-07-29 23:32:18

标签: r csv for-loop export output

这就是我想要做的......

arima_fits <- group_by(Insample, Region) %>% do(fit=auto.arima(.$Sales)) for(i in 1:64) { fitarima <- forecast.Arima(arima_fits$fit[[i]], h=32) write.csv(fitarima,file="fitarima.csv") }

如何让R在一个新文件中将所有64个输出的预测结果一起保存?

这里是样本的样子(在这种情况下从121到152) 每次循环运行时输出32行:

Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 121 56.63080 54.28690 58.97471 53.04611 60.21549 122 56.94228 54.44269 59.44187 53.11949 60.76507 123 57.24700 54.62258 59.87141 53.23330 61.26070 124 57.54115 54.81863 60.26367 53.37741 61.70489 125 57.82130 55.02380 60.61881 53.54288 62.09972 126 58.08443 55.23172 60.93715 53.72158 62.44729 127 58.32794 55.43658 61.21929 53.90599 62.74988

1 个答案:

答案 0 :(得分:4)

方法1:

您可以使用追加功能,并使用write.table代替write.csv的{​​{1}}

write

这将删除列名称。 如果列名很重要,您可以执行以下操作:

让我们先删除旧文件:

arima_fits <- group_by(Insample, Region) %>% do(fit=auto.arima(.$Sales)) 

for(i in 1:64) { 
fitarima <- forecast.Arima(arima_fits$fit[[i]], h=32) 
write.table(fitarima,file="fitarima.csv", append=TRUE,sep=",",col.names=FALSE,row.names=FALSE) 
}

在第一次写入时允许列名:

file.remove("fitarima.csv")

然后执行剩余的没有列名:

fitarima <- forecast.Arima(arima_fits$fit[[1]], h=32) 
write.table(fitarima,file="fitarima.csv", append=TRUE,sep=",",row.names=FALSE) 

方法2:

您还可以一起生成所有结果,然后一次性写入:

让我们先删除旧文件:

for(i in 2:64) { 
fitarima <- forecast.Arima(arima_fits$fit[[i]], h=32) 
write.table(fitarima,file="fitarima.csv", append=TRUE,sep=",",col.names=FALSE,row.names=FALSE) 
}

现在,重新开始:

file.remove("fitarima.csv")

现在写下文件:

fitarima <- NULL 
for(i in 1:64) { 
fitarima <- rbind(fitarima, forecast.Arima(arima_fits$fit[[i]], h=32) )
}

希望这会有所帮助!!