【问题标题】:Loop Causal Impact in R over multiple datasets and automatically export results在多个数据集上循环 R 中的因果影响并自动导出结果
【发布时间】:2020-08-15 02:37:03
【问题描述】:

我需要一些关于如何解决这个问题的建议。我有许多动物园对象,我想使用 Google 开发的同音词包在 R 中对其执行因果影响分析。为了自动化这个过程,我想在动物园对象上运行一个循环,并自动将结果保存在一个文件中,以便以 word 或 csv 格式导出。

到目前为止,我的解决方案是通过

将动物园对象包含到动物园列表中
    zoolist<-list(ts1, 
                ts2,
                ts3 
                 )

然后运行一个for循环,例如:

    for (i in zoolist)
{
  experiment_impact<-CausalImpact(i, 
                                  pre.period, 
                                  post.period, 
                                  model.args = list(nseasons = 7, season.duration = 1))
  summary(experiment_impact)
}

代码似乎可以工作,但是我不知道如何以 csv 或 doc 或任何格式导出所有输出,前提是它紧凑且可读。

有什么想法吗?感谢您的帮助!

【问题讨论】:

  • 如果您发布创建 ts1、ts2 和 ts3 的代码以及您希望如何构建输出的示例,将会很有帮助。

标签: r loops statistics time-series causality


【解决方案1】:

如果您只想捕获摘要,与打印到屏幕上的内容完全相同,您可以使用capture.output。将循环中的第二行替换为:

capture.output(summary(experiment_impact), file = 'example.txt', append = T)

一个更优雅的解决方案可能是使用lapply 对列表中的每个项目运行分析,以便最终得到一个输出项目列表:

resultList = 
  lapply(
    zoolist, 
    CausalImpact, 
    pre.period, 
    post.period,
    model.args = list(nseasons = 7, season.duration = 1)
  )

然后,您可以从列表中的每个 CausalImpact 对象中提取所需的值,并在 data.frame 中格式化这些值,您可以使用 write.csv 将其输出。

【讨论】:

  • 非常感谢您的回答。它让我走上了正确的道路:由于 Causal Impact 对象无法直接在数据框中进行转换,并且您的解决方案为我提供了一个大列表对象,因此我必须通过 export = lapply(resultList 访问我感兴趣的列表中的特定列表, "[[" , "summary") 然后最后写 csv.谢谢!
猜你喜欢
  • 1970-01-01
  • 2020-02-05
  • 2015-01-28
  • 2020-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多