在 R 中创建具有不同参数的函数
Create a function with different arguments in R
我正在创建一个功能类似的函数,但它会调用不同的预测算法。
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'的值(可以是字符串或函数名ets
、auto.arima
),'modelBuild'调度正确的方法。
我会用 UseMethod
.
您可以重新定义数据对象的class,以便调用正确的方法函数。例如:
forecast_all <- function(data, algo_name, h, ...) {
class(data) <- c(class(data), algo_name)
model <- modelBuild(data, ...)
}
我正在创建一个功能类似的函数,但它会调用不同的预测算法。
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'的值(可以是字符串或函数名ets
、auto.arima
),'modelBuild'调度正确的方法。
我会用 UseMethod
.
您可以重新定义数据对象的class,以便调用正确的方法函数。例如:
forecast_all <- function(data, algo_name, h, ...) {
class(data) <- c(class(data), algo_name)
model <- modelBuild(data, ...)
}