Лучший способ назвать объекты программно с помощью R?
Я использую различные алгоритмы моделирования для набора данных. Я добился лучших результатов, моделируя мои входные переменные для моих ответов по одному, например:
model <- train(y ~ x1 + x2 + ... + xn, ...)
После того, как я обучу свои модели, я бы не хотел повторно запускать их каждый раз, поэтому я пытался сохранить их как.rda
файлы. Вот пример цикла для модели случайного леса (не стесняйтесь предложить лучший способ, чем цикл!):
# data_resp contains my measured responses, one per column
# data_pred contains my predictors, one per column
for (i in 1:ncol(data_resp)) {
model <- train(data_pred_scale[!is.na(data_resp[, i]), ],
data_resp[!is.na(data_resp[, i]), i],
method = "rf",
tuneGrid = data.frame(.mtry = c(3:6)),
nodesize = 3,
ntrees = 500)
save(model, file = paste("./models/model_rf_", names(data_resp)[i], ".rda", sep = ""))
Однако, когда я загружаю модель, она будетmodel
.
Я не нашел хорошего способа сохранить модель с соответствующим именем, чтобы попытаться вернуться к ней позже. Я обнаружил, что можно присвоить объект строке так:
assign(paste("./models/model_rf_", names(data_resp)[i], ".rda", sep = ""), train(...))
Но я все еще остаюсь с тем, как ссылаться на объект, когда сохраняю его:
save(???, file = ...)
Я не знаю, как назвать объект по его собственному имени.
Наконец, даже загрузка представляет проблему. я пробовалassign("model_name", load("./model.rda"))
, но результирующий объект, называемыйstring
в конечном итоге просто удерживая строку с именем объекта, «модель».
Оглядевшись, я обнаружил,ЭТО вопрос, который кажется актуальным, но я пытаюсь выяснить, как применить его к моей ситуации.
Я мог бы создать список с именами каждого столбца вdata_resp
(мои взвешенные ответы), а затем использоватьlapply
использоватьtrain()
, но я все еще немного застрял в том, как динамически обращаться к новому имени объекта, чтобы сохранить результирующую модель.