如何根据R中前一行的结果计算值?

时间:2017-08-07 21:20:43

标签: r

我正在尝试从数据框中计算一个新列,该数据框从前一行计算值,这是刚刚计算出来的。例如,如果公式是x_i = x_(i-1)* 2且x_0 = 1,那么我们会得到这样的结果:

df$x
1
2
4
8
16

我知道我可以使用循环来进行计算,但是有什么方便可以做同样的伎俩吗?感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

你可以在基础R中使用Reduce函数:

  Reduce("*",c(1,rep(2,6)),accumulate = T)
  1  2  4  8 16 32 64

答案 1 :(得分:0)

您可以使用递归函数(虽然我不确定简单循环的错误)

数据

 df <- data.frame(x=1)

功能

 special <- function(x,count,end) { 
                 if (count < end) {
                     x <- c(x, tail(x,1)*2)
                     special(x, count+1, end)
                 } else {
                     return(x)
                 }
            }

输出

 special(df$x, 1, 5)
 # 1  2  4  8 16