【问题标题】:How do I store for loop results from R into a csv file?如何将 R 中的 for 循环结果存储到 csv 文件中?
【发布时间】:2014-09-21 11:45:30
【问题描述】:

这就是我想要做的..

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

【问题讨论】:

    标签: r csv for-loop export output


    【解决方案1】:

    方法一:

    您可以使用附加功能,并使用write.table 而不是write.csvwrite

    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) 
    

    然后做剩下的没有列名:

    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) )
    }
    

    现在写入文件:

    write.csv(fitarima,file="fitarima.csv") 
    

    希望这会有所帮助!

    【讨论】:

    • 不幸的是,没有工作..它仍然返回csv文件中第64个循环的结果..
    • 嗯...这很令人惊讶。请分享fitarima的样本。
    • 太棒了!非常感谢.. 我不关心标题,所以这使代码更简单.. 谢谢你的列名提示!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 2020-07-24
    相关资源
    最近更新 更多