【问题标题】:Trying to figure out For Loops试图找出 For 循环
【发布时间】:2023-03-07 11:12:01
【问题描述】:

我只是想让 For 循环以 1 个月的增量增加一个滚动窗口,并在每个增量处确定硬件参数。

ss<-c(29,36,36,48,93,28,35,28,37,50,37,3,25,28,40,45,38,43,34,44,43,25,33,34)
ss2<-t(ss)
for (i in 1:12){
sseries<-ts(ss2[c(i:11+i)],frequency=12)
ssforecasts <- HoltWinters(sseries, beta=FALSE, gamma=FALSE)
ssforecasts
}

但我明白了:

ts(cbind(xhat = final.fit$level[-len - 1], level = final.fit$level[-len - ) 中的错误: 'ts' 对象必须有一个或多个观察结果

【问题讨论】:

  • 尝试在 for 循环中添加一些 cat 命令,以便更好地了解正在发生的事情以及导致错误的原因。例如,for (i in 1:12){ sseries &lt;- ts(ss2[c(i:11+i)],frequency=12) cat(paste0("Information for Series ",i,"\n")) cat(sseries) cat("\n") ssforecasts &lt;- HoltWinters(sseries, beta=FALSE, gamma=FALSE) print(ssforecasts) cat("\n") }

标签: r holtwinters


【解决方案1】:

您正确地调用了切片,但 R 的评估顺序并未按照您的意愿进行评估。当您到达i=11 时,您会看到:

> i:11+i
[1] 22

这是导致错误的原因,请尝试以下操作:

ss<-c(29,36,36,48,93,28,35,28,37,50,37,3,25,28,40,45,38,43,34,44,43,25,33,34)
ss2<-t(ss)
for (i in 1:12){
  sseries<-ts(ss2[c(i:(11+i))],frequency=12)
  ssforecasts <- HoltWinters(sseries, beta=FALSE, gamma=FALSE)
  ssforecasts
}

【讨论】:

  • 在我看来参数应该打印出来,但它想要一个延续。
  • 尝试在循环中添加print() 语句
【解决方案2】:

好的,我必须使用语句 print(ssforecasts) 来获取结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 2012-06-01
    • 1970-01-01
    相关资源
    最近更新 更多