Как сохранить результат большой симуляции в 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)