在同一函数中加入两个时间序列

问题描述 投票:0回答:1

我试图将两个函数结果合而为一,并试图在一列中获得结果。我的代码

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()进行故障转移)有人可以帮助我,如何在同一函数中同时提取拟合值和预测值。在此先感谢!

r dataframe time-series plyr rbind
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.