首页 > 解决方案 > r:在函数内的公式中使用傅立叶时未找到对象

问题描述

(使用中的forecastr)。如果我写:

tslmf <- function(y, h, myK,...) {
  fourier(y, myK)
}

我可以调用它,tslmf(taylor, h=1, c(1,1))一切正常。但如果我写:

tslmf <- function(y, h, myK,...) {
  fit <- tslm(y ~ trend + fourier(y, K=myK))
}

并称其为完全相同,我得到: object 'myK' not found

如果我这样做:

tslmf <- function(y, h, myK,...) {
  z <- fourier(y, myK)
  fit <- tslm(y ~ trend + z)
}

它确实有效!

这是为什么?

标签: rformulaforecastinglm

解决方案


fourier调用 inside正在环境tslm中寻找,并且在那里找不到它们。的封闭环境不是你的函数的环境,你有.myKforcastbaseglobaltslmmyK

请参阅函数环境apply() 和 forceAndCall() 忽略来自 parent.frame() 的 get()访问传递给父 R 函数或在其中定义的变量


推荐阅读