Сохраняйте файл в R каждый час
У меня есть непрерывный процесс сбора данных, и я хочу записывать данные, которые собирались каждый час. Просто, как я могу условно сохранять данные каждый час в файл.Rdata.
Для контекста я собираю данные в список, хочу сохранить объект списка в почасовом файле, удалить список и перестроить его.
Я попробовал код ниже, но он не работал:
if (identical(format(Sys.time(), "%M:%S"), "00:00")) {
save(twt, file=fname_r)
}
Любая помощь будет высоко ценится.
2 ответа
Вы можете поступить об этом неправильно. Не все является работой для R (учитывая, что R действительно однопоточный), и планирование всегда было ключевой задачей операционной системы. использование cron
или если вы работаете на этой лидирующей на рынке ОС с северо-запада, изучите варианты ее планирования. Затем настройте тривиальный файл Rscript.
Запустите непрерывный процесс сбора для сбора и выгрузки результатов куда-либо, либо в ascii, либо в двоичный файл. Затем почасовая работа по сбору самых последних свалок. Это можно сделать в R, как только вы выясните расписание.
Что касается более узкого вопроса о том, прошел ли час, используйте что-то вроде
then <- Sys.time()
# ... stuff happens ...
now <- Sys.time()
if (as.numeric(difftime(now, then, unit="mins") > 60) {
# .. do stuff
}
Чтобы сделать планирование в R
Вы могли бы использовать tclTaskSchedule
функция в tcltk2
пакет. Вы говорите ему, как долго ждать между выполнением задач, заданием на выполнение (выражение / функция) и повторением задачи, затем в фоновом режиме она будет запускать задачу на регулярной основе. Только будьте осторожны, чтобы у вас не было двух процессов, мешающих друг другу. Если ваша задача сохранения объекта выполняется одновременно с обновлением того же объекта, то есть вероятность, что будет сохранена только часть объекта или что то, что было сохранено, является гигантским. Поэтому вам нужно каким-то образом проверить, завершен ли объект данных, прежде чем сохранить его.