扭转累积和的功能方法?

时间:2014-01-28 22:29:55

标签: r

如果我有累积和的向量,例如

> 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

但这对我来说似乎不太喜欢......有什么想法吗?

2 个答案:

答案 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(.)))