我有多个数据帧,需要每周计算每个数据帧的平均值和标准误差,并另存为 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="")
}
当你做paste ("Curated_", x, ".csv", sep = "")
时,它不起作用,因为x
是一个data.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="")
})