複数の要素を持つリストがあります。各リストの 2 つの要素を使用して、予測から 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
して取得して適用する必要があります。次のコードを使用しました。ets
forecast
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')