【发布时间】:2014-12-06 15:58:02
【问题描述】:
我有一个包含多个元素的列表,我需要使用每个列表中的两个元素应用预测中的 ets 函数。
下面是列表 dat.list 每个列表都有时间序列,称为 z 和 lam
## Create Dummy list
##Time series -> z, lambda - > lam
z <- ts(matrix(rnorm(30,10,10), 100, 3), start = c(1961, 1), frequency = 12)
lam <- 0.8
ap <- list(z=z,lam=lam)
z <- ts(matrix(rnorm(30,10,10), 100, 3), start = c(1971, 1), frequency = 12)
lam <- 0.5
zp <- list(z=z,lam=lam)
dat.list <- list(ap=ap,zp=zp)
现在我需要获取每个时间序列 z 并获取 lam 并使用 forecast 包中的 ets 函数应用它。我使用了以下代码。
library("forecast")
library("plyr")
ets.f <- function(x) {
forecast(ets(x$z, lambda = x$lam),h=12)$mean ## I need to apply lambda from list lam
}
ens.f <- function(x){
mm <- llply(x,ets.f)
tq <- matrix(unlist(mm), ncol = 12, byrow = TRUE)
tq
}
fore <- llply(dat.list, ens.f)
当我运行程序时,我收到以下错误"Error in x$z : $ operator is invalid for atomic vectors"。
我不确定如何应用列表的各个元素并将其应用到函数中。任何帮助将不胜感激。
非常感谢
此外,我还尝试在列表中将z 和lam 分开,但一直不知道如何应用它。我也愿意使用下面的代码。非常感谢。
ts.l <- lapply(dat.list,'[[','z')
lam.l <- lapply(dat.list,'[[','lam')
【问题讨论】:
标签: r list lapply sapply tapply