Выберите конкретный элемент из list.files, где данные существуют в имени файла (то есть, условно) - PullRequest
0 голосов
/ 25 февраля 2020
game_name <- "fungame"
day_from <- 7 # train from
day_to <- 30 # predict to
directory <- paste0("/home/rstudio-doug/analysis/radhoc/ltv_models/models/", game_name)

list.files(directory)
fungame_20200201_day_7_to_day_30.rds
fungame_20200221_day_7_to_day_30.rds
fungame_20200222_day_7_to_day_30.rds
fungame_20200201_day_7_to_day_60.rds
fungame_20200221_day_7_to_day_60.rds
fungame_20200222_day_7_to_day_90.rds

Каждый из этих файлов является переменной списка, которая включает, среди прочего, обученную модель. Когда я вызываю сценарий, я хотел бы получить самую последнюю обученную модель для соответствующего дня от и до дней. В приведенном выше примере у меня с 7 по 30 день (моя модель обучается взаимодействию приложений через 7 дней после установки и пытается предсказать доход на 30 день с момента установки).

В этом случае я Я хотел бы выбрать самую последнюю тренированную модель с 7-го по 30-й, а именно: fungame_20200222_day_7_to_day_30.rds.

Один из подходов, о котором я думал, это разделить каждую строку на under_score и затем сохранить как фрейм данных. Затем я мог бы отфильтровать df на день от = 7 и день до = 30, а затем выбрать максимум (which.max ()?).

Что было бы обычным способом сделать это, если есть один ? Этот скрипт является частью конвейера ML, любые новые предложения или рекомендации очень приветствуются. Более целостно я пытаюсь динамически выбрать самую последнюю обученную модель для данной игры и целевой даты. Использование строк с under_scores в качестве части моего конвейера просто «кажется», что это может быть не самым разумным подходом.

1 Ответ

1 голос
/ 25 февраля 2020

Вот адаптация к решению, которое я использовал для извлечения нескольких файлов. Он извлекает самый последний файл на основе времени создания file.info(). Что-то похожее на это:

files <- list.files(path_to_files, pattern = "day_7_to_day_30.rds$", full.names = TRUE)

files[which.max(file.info(files)$ctime)]

Редактировать: Я на Windows, поэтому ctime относится ко времени создания файла. Проверьте ?file.info для получения дополнительной информации.

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