Лучший способ назвать объекты программно с помощью 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(), но я все еще немного застрял в том, как динамически обращаться к новому имени объекта, чтобы сохранить результирующую модель.

Ответы на вопрос(4)

Ваш ответ на вопрос