我正在尝试从数据框中计算一个新列,该数据框从前一行计算值,这是刚刚计算出来的。例如,如果公式是x_i = x_(i-1)* 2且x_0 = 1,那么我们会得到这样的结果:
df$x
1
2
4
8
16
我知道我可以使用循环来进行计算,但是有什么方便可以做同样的伎俩吗?感谢您的帮助。
答案 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