0
私の目的は、変数リストからいくつかの時系列サブセットを作成することです。私はforループでこれを書いた。しかし、私はループを必要としない、実在するR関数を使って行う方法について、よりエレガントなアイデアを探しています。 Rの新しい機能に関するすべてのアイデアやイントロが高く評価されています。forループの改善:ループのない一連のサブセットの作成
コードの再現性の例:
russell_sim <- arima.sim(model=list(ar=c(.9,-.2)),n=449)
russell_sim <- ts(russell_sim, start = c(1980,1), end = c(2017,5) ,frequency = 12)
pmi_sim <- arima.sim(model=list(ar=c(.9,-.2)),n=449)
pmi_sim <- ts(russell_sim, start = c(1980,1), end = c(2017,5) ,frequency = 12)
big_list<- list(russell = russell_sim, pmi= pmi_sim)
for (i in 1: length(big_list)) {
assign(paste(names(x = big_list)[i], "_before08", sep = ""), window(big_list[[i]], start=c(1981,1), end=c(2007, 12)) )
}
ありがとうございました。
ありがとう、これは動作し、それは私が探していたものです。 1つは、Rでループする代わりにlapply/list2envを使用することをお勧めしますか?利点は何ですか?ありがとうございました。 – k1000x
さて、パフォーマンスはさておき、コードはしばしばより洗練されていて、lapplyはforループのようなオブジェクトをあなたの環境に追加しません(反復する用語 'i'など)、あなたは出力がリスト形式であることを知っています。 forループは、複数の異なるオブジェクトを使用したり、複数の異なるオブジェクトを操作したりしているときに同じオブジェクトを反復して再割り当てする場合に使用する方が適しています。適用関数はループより高速ですが、これはすべて文脈的です。私はちょうどあなたの現在のコードに代わるものを提供していました、私は自分自身が 'assign'や' get'関数を使っていることが分かります:) –