Сохранение промежуточного выхода из ddply plyr (или аналогичных функций) - PullRequest
0 голосов
/ 24 октября 2018

У меня большой набор данных с несколькими условиями и участниками.Я использую ddply, так что для каждой комбинации условия участника X я могу запустить несколько функций и сохранить вывод final .Поскольку для реализации различных функций из интересующего пакета требуется некоторое время, весь анализ может занять 1-2 недели.Поэтому я не просто хочу ждать, пока вывод final будет сохранен в одном кадре данных с помощью функции ddply, но также хотел бы сохранить промежуточный вывод в случае сбоя компьютера, чтобы работа была завершенак этому моменту был сохранен (т.е. своего рода резервная копия).Например, если функция ddply прошла через все условия 30 участников (из 90) до того, как компьютер вышел из строя, я хотел бы сохранить данные этих 30 участников, чтобы мне нужно было запустить сценарий только для участников.-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).

...