首页 > 解决方案 > R函数,给定输入将其用于将来的计算

问题描述

对于我的项目,我需要一些我在谷歌上找不到的帮助。是否有代码将命令链的起始值(上一个输出(使用移位函数)*值(来自另一列)=输出)设置为 1,以便下一个命令具有上一个输出以返回上,启动链?无论我尝试过什么,设置第一行 = 1 等,都没有奏效...... :(

非常感谢你的帮助,

费迪南德

有关更多详细信息:在梦境中,第 1 行的 Debt$returnp 将为 1,第 2 行的输出将为第 1 行 (1) * Debt$return (1.015),以此类推,以此类推。有人会知道一串代码可以做到这一点吗? https://i.stack.imgur.com/w2vFW.jpg

标签: rdataframe

解决方案


基于上面的评论并对你想要达到的目标做出一些假设,这对你有什么作用:

library(purrr)
library(dplyr)

values <- c(2,4,6,10)
purrr::reduce(
  .x = values,
  .f = function(state, input){return(c(state, input*dplyr::last(state)))},
  .init=1
)[-1] # the [-1] is just there to remove the initial value from your output

// 更新:
这应该使上面的内容适应您在屏幕截图中显示的内容:

library(tibble)
library(purrr)
library(dplyr)

Debt <- tibble(
    # Week, debt, Date, Diff, Perf
    return = c(NA_real_, 1.015, 1.092, 1.005)
  ) %>%
  mutate(
    returnp = purrr::reduce(
      .x = return[-1], # start with the second entry and skip that initial <NA>
      .f = function(state, input){return(c(state, input*dplyr::last(state)))},
      .init = 1
    )
  )

推荐阅读