Я работаю со списком фреймов данных (72), которые я хочу использовать в качестве входных данных для каретки train
, но у меня возникают проблемы при использовании пользовательской функции. Я нашел потенциальный ответ здесь , но относится к tuneGrid
, а не к trainControl
. Обе функции, которые я написал, не могут передать указанные параметры trainControl
в train
:
fun.train.rf <- function(x) {
ctrl <- trainControl(method = "repeatedcv", repeats = 3)
train(index ~ ., data = x, method = "rf",
trainControl = ctrl)
}
model.list <- lapply(list.partition, fun.train.rf)
or:
fun.train.rf <- function(x) {
train(index ~ ., data = x, method = "rf",
trainControl = list(method="repeatedcv", repeats = 3, p = 0.75))
}
model.list <- lapply(list.partition, fun.train.rf)
Обе функции выше "работают", но обе возвращают модели, которые игнорируют указанные параметры trainControl
. Когда я изучаю полученный список обученных моделей, кажется, что оба примера используют параметры обучения по умолчанию (например, method = boot
):
model.list$modelA$control$method
[1] "boot"
...
Это моя первая реальная попытка использовать lapply и списки, поэтому я предполагаю, что приведенные выше примеры скорее непродуманны, чем недостаток самого caret
.
Как я могу правильно передать параметры trainControl
пользовательской функции, используя знак вставки train
?