【问题标题】:Save result to csv or an excel file during each iteration or simulation在每次迭代或模拟期间将结果保存到 csv 或 excel 文件
【发布时间】:2020-03-25 20:01:09
【问题描述】:

我正在尝试将模拟结果保存为 excel 或 csv 文件。我想在每次迭代后将结果导出到这些文件之一。有没有简单的方法来做到这一点?以下是我尝试过的玩具示例:

for(i in  1 : 10){
  if(i==1){write.csv(i,"test.csv")}
  if(i > 2){write.csv(i,"test.csv",append=TRUE)}
}

在这种情况下,只保存最后一个值 10。

【问题讨论】:

    标签: r export-to-csv


    【解决方案1】:

    我相信write.table 接受append = TRUEwrite.csv 不接受。

    help(write.table)

    ... write.table 的参数:append、col.names、sep、dec 和 qmethod 不能更改。

    for(i in 1:3){
    df <- data.frame(a = sample(1:10,10), b = sample(1:10,10), c = sample(1:10,10))
    write.table(df, file = "test.csv",append = TRUE,sep=",",quote=TRUE,col.names = FALSE)
    }
    

    【讨论】:

      【解决方案2】:

      如何先将结果保存在数据框中,然后导出到 csv?喜欢:

      df <- data.frame(result = NA)
      for (i in 1:10) {
        df[i, "result"] <- i
      }
      write.csv(df, file = "test.csv")
      

      【讨论】:

        【解决方案3】:

        作为Ian pointed out,我们不能更改write.csv的一些参数,所以我们需要使用write.table,这里是一个更简单的循环避免版本if 语句:

        for(i in  1:10){
          write.table(i, "test.csv", sep = ",",
                      row.names = FALSE, col.names = i== 1, append = i > 1)
          }
        

        test.scv 下的输出

        "x"
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        

        【讨论】:

        • @zx8754 非常感谢。正是我想要的。这在您运行大型模拟时很有用,并且当您在模拟中很远并且仍然希望看到该点的结果时会出现错误。
        猜你喜欢
        • 2016-08-06
        • 1970-01-01
        • 1970-01-01
        • 2018-06-11
        • 1970-01-01
        • 1970-01-01
        • 2013-09-30
        • 1970-01-01
        • 2019-06-19
        相关资源
        最近更新 更多