【问题标题】:Run a for-loop over list of dataframes, and save a separate CSV for each output?在数据帧列表上运行 for 循环,并为每个输出保存一个单独的 CSV?
【发布时间】:2018-10-16 19:06:29
【问题描述】:

我有多个数据框,需要计算每个数据框每周的平均值和 SE,并保存为 csv。

在这种情况下,我知道“for 循环”正在工作,因为我总是得到 df3 的 tempdf。我很难为每个 df 创建和命名单独的 csv(例如 Curated_df1.csv、Curated_df2.csv、Curated_df3.csv)。

library(plyr)
list = list (df1, df2, df3)

for (x in list){

    tempdf = ddply (x, c("week"),
       N = lenght (variable),
       mean = mean (variable),
       SD = sd (variable),
       SE = sd/ sqrt(N))

    tempname = paste ("Curated_", x, ".csv", sep = "")
    write.csv (tempdf, tempname, na="")

    }

【问题讨论】:

标签: r for-loop


【解决方案1】:

当您执行paste ("Curated_", x, ".csv", sep = "") 时,它不起作用,因为xdata.frame,而不是字符对象。如果您有一个每个元素都有名称的列表,您可以使用purrr 中的iwalk 并使用.y 来引用列表元素的名称,并使用.x 来引用列表元素。下面我创建了一个列表,其中每个元素都被命名并使用iwalk

library(plyr)
my_list = list(name1 = df1, 
               name2 = df2, 
               name3 = df3)

library(purrr)

iwalk(my_list, ~{
    tempdf = ddply (.x, c("week"),
     N = lenght (variable),
     mean = mean (variable),
     SD = sd (variable),
     SE = sd/ sqrt(N))

    tempname = paste ("Curated_", .y, ".csv", sep = "")
    write.csv (tempdf, tempname, na="")
})

【讨论】:

    猜你喜欢
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 2021-04-27
    • 2022-12-19
    • 2018-12-13
    • 1970-01-01
    相关资源
    最近更新 更多