Я пытаюсь определить модель 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