【问题标题】:loop in loop to calculate a sum of a "continuous product" sequence function in R循环循环以计算R中“连续积”序列函数的总和
【发布时间】:2020-12-04 01:05:12
【问题描述】:

我尝试在 R 中计算以下方程的值。

我有每个对应的 F_x、F_{x+1}...的数据集和值...

但是,由于Qs 的值太多,我正在考虑在循环中编写一个循环。有点困惑。 Q 的循环似乎与 s 的循环冲突

但是如果我如下编写循环,似乎我需要手动计算 Q 100 次才能得到所有答案。另外我的循环似乎是错误的......我该如何解决这个问题?非常感谢

Y <- function(x,s, Q){
  n <- length(s-x)-1
  Q <- c(1:100)

    for(s in seq(1:n)){

     Y[s] <- sum(s*Q[s]*cumprod(Fx[1:s])) 
    }
return(Y)
}

【问题讨论】:

  • 几个具有预期答案的示例将帮助我们验证我们的解决方案。我确信有比 3 个嵌套的 for 循环更好的答案。
  • 另外,您在循环中不断覆盖Y。你只对它的最后一个值感兴趣,还是你想要介于两者之间的所有值?最重要的是,我认为您需要 cumprod(Fx[1:s]) 而不是 cumprod(Fx[s]),因为您想将所有值从 Fx1 乘以 Fxs。

标签: r function loops package


【解决方案1】:

我不确定下面的代码是否达到您的目标

Y <- function(x,s) {
  Q <- 1:100
  S <- 1:(s-x)
  outer(Q,S,FUN = function(q,s) q * sum(c(1:s) * cumprod(Fx[1:s])))
}

for循环版

Y <- function(x,s) {
  nr <- 100
  nc <- s-x
  y <- matrix(nr*nc,nrow = nr)
  for (Q in 1:nr) {
    for (S in 1:nc) {
      y[Q,S] <- Q * sum(c(1:S) * cumprod(Fx[1:S]))
    }
  }
  y
}

【讨论】:

  • 感谢您的帮助!我们可以写成for循环格式吗?
  • 感谢您的宝贵时间。又一题。如果不是QS*Fx,而是(2+Q)^(-S)*Fx,我该如何改变这个等式?我尝试使用(2+Q)^(-S),它单独工作正常,但是当我在循环中混合时,它会变成一个错误为“未使用的参数(-c(1:s))”
  • @ScarlettZhao 您如何在for 循环中使用它?您能否展示一段代码或更好地创建一个包含更多详细信息的新帖子。
猜你喜欢
  • 1970-01-01
  • 2023-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-24
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
相关资源
最近更新 更多