使用依赖于其自身输出的函数构建数据帧

时间:2017-01-18 14:35:26

标签: r function

我在网上试过,但我找不到合适的解决方案。任何帮助将非常感激!

示例:

# I want this OUTPUT df

Previous <- c(2, 4, 8, 16)
Today <- c(4, 8, 16, 32)
df <- data.frame(Previous, Today)

INPUT条件:

TodayPrevious

的函数
Today_function <- Previous_start * 2

对于Previous我只有起始值:

Previous_start <- 2

Today_function的输出会输入Previous的下一行,并且是Today_function的新输入。

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以滥用Reduce迭代地将函数应用于自己的输出:

n <- 4           # Desired number of rows in the data.frame
val0 <- 2        # Starting value

f <- function( valPrev, dummy ) { valPrev * 2 }    # Make function "binary"
v <- Reduce( f, rep(NA,n), val0, accumulate=TRUE )
X <- data.frame( Previous=head(v,-1), Today=tail(v,-1) )

旁注:我知道这很常见,但我建议不要使用df作为变量名称,因为它是F发行版密度函数的内置名称。 / p>