2014-01-28 89 views
18

如果我有一個累計和的向量,例如反向累計和的功能方法?

> vec <- cumsum(1:10) 
[1] 1 3 6 10 15 21 28 36 45 55 

是那裏vec轉化爲它的原始的c(1:10)載體的功能呢?

現在,我使用一個for循環雲:

> result <- vec[1] 
> for (i in 2:length(vec)) result <- append(result, vec[i]-vec[i-1]) 
> result 
[1] 1 2 3 4 5 6 7 8 9 10 

但是這似乎並不很喜歡[R給我...任何想法?

+1

我猜你的循環可能被 「矢量化」 像'C(VEC [1],VEC [-1] - VEC [-length(VEC) ])' –

回答

31

只需使用diff拿到連續差異:

> c(vec[1],diff(vec)) 
[1] 1 2 3 4 5 6 7 8 9 10 
+0

比我更快的手指! – Justin

+0

+1該死的簡單。 –

+0

@Justin這麼快,我在開始之前完成了這個評論的輸入! – joran