Я создаю функцию, которая ведет себя аналогичным образом, но будет вызывать разные алгоритмы прогнозирования.
modelBuild_auto_arima <- function(data, ...) {
forecast::auto.arima(data)
}
modelBuild_ets <- function(data, model, ...) {
forecast::ets(data, model = model)
}
...
Рекомендуется ли хранить ее как отдельные функции и вызывать ее отдельно или создавать универсальную функциюс "UseMethod".Я попытался создать с помощью "UseMthod"
modelBuild <- function(x, ...) {
UseMethod("modelBuild")
}
modelBuild.auto.arima <- function(x, ...) {
forecast::auto.arima(x)
}
modelBuild.ets <- function(x, ...) {
forecast::ets(x, model = model)
}
Идея состоит в том, чтобы вызывать эти функции как структурный блок модели в функции прогнозирования
forecast_all <- function(data, algo_name, h, ...) {
model <- modelBuild(data, ...)
forecast::forecast(model, h = h)
}
На основе значения 'algo_name' (itможет быть строкой или именем функции ets
, auto.arima
), modelBuild отправляет правильный метод.