2016-02-05 98 views
2

比方說,我有價格向量:加入Na對矢量

foo <- c(102.25,102.87,102.25,100.87,103.44,103.87,103.00) 

我想從X的百分比變化週期前,並說,將其存儲到,我會打電話給log_returns另一個向量。我無法將矢量foo和log_returns綁定到data.frame中,因爲矢量長度不同。所以我想能夠將NA附加到log_returns,以便我可以將它們放入data.frame中。我想通了,在向量的末尾追加一個NA的一種方式:

log_returns <- append((diff(log(foo), lag = 1)),NA,after=length(foo)) 

但是如果我之前1期看百分比的變化,只有幫助。我正在尋找填補NA的方法,無論我投入多少時差,以便百分比變化矢量在長度上等於foo矢量

任何幫助將不勝感激!

+0

您可以在列表中存儲,而不是 – 2016-02-05 01:59:50

+4

下面的答案是好的,但更普遍的,如果你有長度不等矢量的列表,你可以這樣做例如'l < - list(1,1:2,1:5); data.frame(lapply(l,\'length < - \',max(lengths(l))))' – rawr

回答

1

你可以使用你自己的差異的修正:

mydiff <- function(data, diff){ 
    c(diff(data, lag = diff), rep(NA, diff)) 
} 

mydiff(foo, 1) 
[1] 0.62 -0.62 -1.38 2.57 0.43 -0.87 NA 

data.frame(foo = foo, diff = mydiff(foo, 3)) 

    foo diff 
1 102.25 -1.38 
2 102.87 0.57 
3 102.25 1.62 
4 100.87 2.13 
5 103.44 NA 
6 103.87 NA 
7 103.00 NA 
+0

偉大的解決方案。謝謝。 – huesecon