【问题标题】:Create a function with different arguments in R在 R 中创建具有不同参数的函数
【发布时间】:2019-08-01 03:54:55
【问题描述】:

我正在创建一个执行类似行为的函数,但它会调用不同的预测算法。

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”的值(可以是字符串或函数名etsauto.arima),“modelBuild”调度正确的方法。

【问题讨论】:

    标签: r method-dispatch


    【解决方案1】:

    我会使用UseMethod

    您可以重新定义数据对象的类,以便调用正确的方法函数。例如:

    forecast_all <- function(data, algo_name, h, ...) {
    
      class(data) <- c(class(data), algo_name)
    
      model <- modelBuild(data, ...)
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-12
      • 2011-05-30
      • 1970-01-01
      • 1970-01-01
      • 2018-07-19
      • 1970-01-01
      • 1970-01-01
      • 2016-10-17
      相关资源
      最近更新 更多