讓我們假設我有一個名爲W在所述data.frame是2時間順序變量Y和X是從觀察1責令10:生成r多個時滯較短的代碼
Y<- c(1,2,3,4,5,6,7,8,9,10)
X<- c(11,12,13,14,15,16,17,18,19,20)
W<- data.frame(Y,X)
我的目標是創建W的滯後版本下面的代碼工作正常使用移位功能封裝DataCombine:
Wl1<- sapply(W,shift,shiftBy=-1, reminder=FALSE)
colnames(Wl1)<- paste(colnames(W),".l1",sep="")
Wl2<- sapply(W,shift,shiftBy=-2, reminder=FALSE)
colnames(Wl2)<- paste(colnames(W),".l2",sep="")
Wl3<- sapply(W,shift,shiftBy=-3, reminder=FALSE)
colnames(Wl3)<- paste(colnames(W),".l3",sep="")
Wl4<- sapply(W,shift,shiftBy=-4, reminder=FALSE)
colnames(Wl4)<- paste(colnames(W),".l4",sep="")
Wl5<- sapply(W,shift,shiftBy=-5, reminder=FALSE)
colnames(Wl5)<- paste(colnames(W),".l5",sep="")
Wl6<- sapply(W,shift,shiftBy=-6, reminder=FALSE)
colnames(Wl6)<- paste(colnames(W),".l6",sep="")
Wl7<- sapply(W,shift,shiftBy=-7, reminder=FALSE)
colnames(Wl7)<- paste(colnames(W),".l7",sep="")
Wl8<- sapply(W,shift,shiftBy=-8, reminder=FALSE)
colnames(Wl8)<- paste(colnames(W),".l8",sep="")
Wl9<- sapply(W,shift,shiftBy=-9, reminder=FALSE)
colnames(Wl9)<- paste(colnames(W),".l9",sep="")
Wl10<- sapply(W,shift,shiftBy=-10, reminder=FALSE)
colnames(Wl10)<- paste(colnames(W),".l10",sep="")
Wlagged<- data.frame(Wl1,Wl2,Wl3,Wl4,Wl5,Wl6,Wl7,Wl8,Wl9,Wl10)
我需要使這個代碼更緊湊,也不容易出錯的援助。我猜測可以使用某種形式的應用(而不是循環語句),但我還不知道如何更好地使用這些函數。謝謝你們!
這可能是你的情況很好看的不那麼優雅的解決方案:HTTP://adv-r.had。 co.nz/Functional-programming.html – 2014-10-16 21:49:33