Проблема с назначением переменной в цикле foreach (R) - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь определить модель VAR для многомерных временных рядов в цикле foreach.В определении модели я использую параметр exogen для определения дополнительных функций, которые я не хочу прогнозировать в модели var.

set.seed(2019)
dataframe <- foreach(

  SOME CODE...

  mod_var <- tryCatch(
    expr = {
      vars::VAR(
        y = train[, c(target, endo_var)],
        type = "const",
        exogen = train[, exo_var],
        lag.max = lag_max_var,
        ic = "AIC"
      )
    },
    error = function(e) {
      return(NULL)
    }
  )

SOME MORE CODE...

)

Моя проблема заключается в том, что я нажимаю сценарий вручную, не выполняя весь цикл,все отлично работаетОднако, когда цикл выполняется, я получаю сообщение об ошибке

Мое предположение, что это может иметь какое-то отношение к тому, как функция foreach распределяет оценки, оказалось правильным, так как цикл работал, когда я использовал дляоператор глобального присваивания для установки объекта, который я даю параметризирующему экзогену, вот так:

set.seed(2019)
dataframe <- foreach(

  SOME CODE...

  exogen_matrix <<- train[, exo_var]
  mod_var <- tryCatch(
    expr = {
      vars::VAR(
        y = train[, c(target, endo_var)],
        type = "const",
        exogen = exogen_matrix,
        lag.max = lag_max_var,
        ic = "AIC"
      )
    },
    error = function(e) {
      return(NULL)
    }
  )

SOME MORE CODE...

)

Поскольку я читал, что делать глобальные присваивания внутри циклов не является хорошей практикой, я хотел спросить, есть ли другой способобеспечить правильное назначение объектов в цикле foreach

...