0
我的目標是從變量列表創建大量時間序列子集。我用for循環寫了這個。然而,我正在尋找關於如何處理existir 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)) )
}
謝謝。
謝謝,這個工程,它正是我一直在尋找。有一件事,爲什麼推薦使用lapply/list2env代替R中的循環?有什麼優勢?謝謝。 – k1000x
好吧,除了性能外,代碼通常更清晰,lapply不會像for循環那樣將對象添加到您的環境中(例如迭代術語「i」),並且您知道輸出將以列表格式顯示。如果您正在迭代並重新分配相同的對象,或者使用許多不同的對象,則for循環更適合使用。有些人聲稱應用函數比循環更快,但這都是上下文的。我只是提供給你一個替代你當前的代碼,我發現自己在這裏和那裏使用'assign'或'get'函數:) –