【问题标题】:Joining two time-series in same function在同一函数中加入两个时间序列
【发布时间】:2020-02-10 15:27:40
【问题描述】:

我正在尝试将两个函数结果合并为一列,并尝试在一列中获取结果。

我的代码

myfun <-function(x){
  fit <-Arima(x, order = c(1,1,1), seasonal = list(order = c(0,1,0), period = 52),include.mean=TRUE,
                        include.constant = FALSE, method = 'CSS')
    fit_a <- forecast(fit$fitted)
    fit_a <- data.frame(fit_a$fitted)
    colnames(fit_a)[1] <- "load"
    fit_a$load <- as.data.frame(fit_a$load)
    fit_b <- data.frame(forecast(fit,h=400))
    fit_b <- data.frame(fit_b$Point.Forecast)
    colnames(fit_b)[1] <- "load"
    fit_b$load <- as.data.frame(fit_b$load)
    return(rbind(fit_a,fit_b))
  }

我得到了像 return(fit_a)return(fit_b) 这样的值,但是在执行 rbind() 时我不能因为单独的时间序列数据。 尝试过:c(fit_a,fit_b) 显示了两个不同的 ts(这确认我们有输出并且只是失败了 rbind())。

谁能帮助我,如何在同一函数中提取拟合值和预测值。

提前致谢!

【问题讨论】:

  • 将它们保存为列表中的不同元素并返回列表?
  • @RAB 你能解释清楚一点吗?我已经将 fit_a 和 fit_b 作为两个不同的元素,并尝试通过在最后一步加入来提取它们。
  • 是的,所以fit &lt;- list(fit_a, fit_b)return(fit)。那么fit[[1]] 将是你的fit_afit[[2]] 将是你的fit_b
  • 为未来的人添加了更多信息的答案。如果有帮助,请随时标记为答案

标签: r dataframe time-series plyr rbind


【解决方案1】:

返回多个对象的一种方法是创建一个对象列表,然后将其返回。在您的情况下,您可以在函数结束时使用它:

fit <- list(fit_a, fit_b)

return(fit)

然后您可以使用fit[[1]]fit[[2]] 访问元素。

您还可以选择命名元素,以便使用$ 访问它们,如下所示:

fit <- list(fit_a = fit_a, fit_b = fit_b)

return(fit)

那么你可以使用fit$fit_afit$fit_b

【讨论】:

    猜你喜欢
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    相关资源
    最近更新 更多