2016-12-08 1 views
0

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

+0

Под «узлами» вы имеете в виду несколько физических машин? –

+0

Хороший вопрос. Суперкомпьютер имеет много машин с 24 процессорами за штуку. Я не уверен, буду ли я делать симуляцию на одной машине или через многие. – jntrcs

+0

@jntrcs Есть ли общая область хранения, к которой могут обращаться все узлы? Если это так, вы можете определить соответствующую структуру папок и сохранить результаты каждого отдельного моделирования в соответствующей папке на одном диске. Код, указанный ниже, будет работать в этом сценарии. – Gandalf

ответ

0

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

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) 
Смежные вопросы