Как кодировать цикл R lapply так, чтобы, если время цикла истекло, все объекты, сгенерированные до сих пор, все еще существовали вне цикла? - PullRequest
0 голосов
/ 02 июня 2018
output_list = lapply(seq_along(input_df), generate_data)

Я перебираю множество фреймов данных и применяю свою собственную функцию generate_data, которая возвращает список.

Каждый список вложен в output_list, но если время цикла истекло, какмогу ли я сохранить списки, которые были сгенерированы до сих пор в output_list?

Я изучил функции tryCatch(), withTimeout() и memory.limit() .`


Решением моей проблемы было использование assign () для назначения каждого списка новой среде:

output_list = lapply(seq_along(input_df), 
              function (x) {
              temp = generate_data(x)
              assign(paste0("df_", x), temp, envir = e)
              return(temp)
              })

Нет.Решением моей проблемы было использование save () внутри цикла lapply:

output_list = lapply(seq_along(input_df), 
              function (x) {
              temp = generate_data(x)
              save(temp, file = paste0("DF/df_", x))
              return(temp)
              })

Сохранение на диск означает, что я не потеряю все свои данные в случае сбоя сеанса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...