Как сохранить результат большой симуляции в R? (несколько узлов, безопасный доступ)

Я делаю большую симуляцию для исследовательского проекта - имитация 1000 футбольных сезонов и анализ результатов. Поскольку времена года будут распределяться по нескольким узлам, мне нужен простой способ сохранить мои выходные данные в файл (или файлы) для последующего доступа. Так как я не могу контролировать, когда узлы завершат работу, я не могу заставить их все одновременно пытаться записать в один и тот же файл, но если они все сохранятся в другом файле, мне понадобится способ агрегировать все данные легко потом. Мысли?

1 ответ

Решение

Я не знаю, задавался ли этот вопрос уже. Но вот что я делаю в своем исследовании. Вы можете просматривать имена файлов и объединять их в один объект, например

require(data.table)
dt1 <- data.table()
for (i in 1:100) {
  k <- paste0("C:/chunkruns/dat",i,"/dt.RData")
  load(k)
  dt1 <- rbind(dt1,dt)
}

agg.data <- dt1
rm(dt1)

Приведенный выше код предполагает, что все ваши файлы сохранены в разных папках, но с одинаковым именем файла.

Или же вы можете использовать следующее, чтобы определить пути к файлам, соответствующие шаблону, а затем объединить их

require(data.table)
# Get the list of files and then read the files using read.csv command
k <- list.files(path = "W:/chunkruns/dat", pattern = "Output*", all.files = FALSE, full.names = TRUE, recursive = TRUE)
m <- lapply(k, FUN = function (x) read.csv(x,skip=11,header = T))
agg.data <- rbindlist(m)
rm(m)
Другие вопросы по тегам