gpt4 book ai didi

r - 使用函数循环遍历行,前一行是下一行的输入

转载 作者:行者123 更新时间:2023-12-04 12:15:01 25 4
gpt4 key购买 nike

我有以下数据集:

df <- data.frame(a=1:10,b=10:1)

我有以下功能:

fun <- function(x,y) x*y/1000+x+y

我想要以下输出:

 for (i in 2:10){df$a[i] = fun(df$a[i],df$a[i-1])};for (i in 2:10){df$b[i] = fun(df$b[i],df$b[i-1])}}

df
# a b
# 1 1.000000 10.00000
# 2 3.002000 19.09000
# 3 6.011006 27.24272
# 4 10.035050 34.43342
# 5 15.085225 40.64002
# 6 21.175737 45.84322
# 7 28.323967 50.02659
# 8 36.550559 53.17667
# 9 45.879514 55.28303
# 10 56.338309 56.33831

本质上,第 i 行的元素是最后一行和当前行的函数输出,这是递归执行的。有更好的方法吗?

最佳答案

我们可以使用 purrr 包中的 accumulate 函数。

library(purrr)

df <- data.frame(a=1:10,b=10:1)

fun <- function(x,y) x*y/1000+x+y

df$a <- accumulate(df$a, fun)
df$b <- accumulate(df$b, fun)

df
# a b
# 1 1.000000 10.00000
# 2 3.002000 19.09000
# 3 6.011006 27.24272
# 4 10.035050 34.43342
# 5 15.085225 40.64002
# 6 21.175737 45.84322
# 7 28.323967 50.02659
# 8 36.550559 53.17667
# 9 45.879514 55.28303
# 10 56.338309 56.33831

关于r - 使用函数循环遍历行,前一行是下一行的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52694034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com