如果我有累积和的向量,例如
> 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
但这对我来说似乎不太喜欢......有什么想法吗?
答案 0 :(得分:31)
只需使用diff
即可获得连续的差异:
> c(vec[1],diff(vec))
[1] 1 2 3 4 5 6 7 8 9 10
答案 1 :(得分:0)
如果其他人想在整个cumsum
上颠倒dataframe
,我可以使用以下方法:
我的数据帧是Factor.df
,第一列是一系列character
-因此从第二列中进行选择。希望对您有帮助
Factor.df[,2:ncol(Factor.df)] <- Factor.df[,2:ncol(Factor.df)] %>% dplyr::mutate_each(dplyr::funs((.) - dplyr::lag(.)))