从plyr的ddply(或类似功能)中保存临时输出

时间:2018-10-24 11:45:09

标签: r data.table plyr

我有一个包含多个条件和参与者的大型数据集。我正在使用ddply,以便对于参与者X条件的每种组合,我可以运行许多功能并保存 final 输出。由于需要花费一些时间来实现目标软件包的各种功能,因此整个分析可能需要1-2周。因此,我不仅要等待ddply函数将 final 输出保存在单个数据帧中,而且还想保存临时输出,以防计算机崩溃而无法完成工作。到那时为止已保存(即某种备份)。例如,如果ddply函数在计算机发生故障之前经过了30个参与者(在90个参与者中)的所有条件,我希望保存这30个参与者的数据输出,这样我只需要在参与者31上运行脚本下次我开始-90。有没有办法使用ddlpy函数来做到这一点?我在下面提供了一个示例脚本,该脚本是实际脚本的简化版本,但(希望)应该捕获与该问题有关的本质。

library(plyr)

DF <- data.frame(Participant = sort(rep(1:90, 90)),
                 dv = rnorm(8100)+300, 
                 iv.x = rep(sort(rep(letters[1:3], 30)), 90), 
                 iv.y = rep(rep(sort(rep(rev(letters)[1:3], 10)), 3),90)
                 )


ef = function(condition1, condition2, dv) {
  # Some example functions
  ef.m <- mean(dv, na.rm = TRUE)
  ef.sd <- sd(dv, na.rm = TRUE)

  # dataframe containing the data               
  data.frame(ef.m, ef.sd)
}

ef.all <- plyr::ddply(DF,.(Participant, iv.x, iv.y), 
                   .fun = function(DF.sub){ef(DF.sub$iv.x, DF.sub$iv.y, DF.sub$dv)})

我还应该注意,我不一定会坚持使用ddply,并愿意接受其他建议以快速运行它(例如,使用data.table)。

0 个答案:

没有答案