【问题标题】:Is there a way to condense this code?有没有办法压缩这段代码?
【发布时间】:2015-06-17 18:59:05
【问题描述】:

有没有办法像这样压缩代码?在这种情况下,B 只是一个列向量,A 只是一个标量值。我觉得这行 Q1

Q1 <- A*(1+B[1])

Q2 <- Q1*(1+B[2])

Q3  <- Q2*(1+B[3])

Q4 <- Q3*(1+B[4])

Q5 <- Q4*(1+B[5])

QCombo <- matrix(c(Q1,Q2,Q3,Q4,Q5))

任何帮助将不胜感激。期望的结果将是一个列向量。

【问题讨论】:

  • 您应该在问题中提供AB
  • @nrussel 你是对的,这是一个不好的提问方式。
  • 你的问题的主题很好,你只需要提供一个完全可重现的例子。

标签: r iteration


【解决方案1】:

你可以试试cumprod(使用@MrFlick的例子)

A*cumprod(B+1)
#[1]   20   60  240 1200 7200

【讨论】:

    【解决方案2】:

    假设你的 A 和 B 看起来像这样

    A <- 10
    B <- 1:5
    

    这看起来很好地使用了Reduce函数

    Reduce(function(a,b) a*(1+b), B, init=A, accumulate=T)[-1]
    # [1]   20   60  240 1200 7200
    

    我们使用[-1] 修剪初始A 值。如果您确实需要,可以将它们封装在 matrix() 调用中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-22
      • 1970-01-01
      • 2012-01-24
      • 2012-10-24
      • 2021-10-18
      相关资源
      最近更新 更多