【问题标题】:A loop function for an exponential multiple by a continuous multiplication function in RR中连续乘法函数的指数倍数循环函数
【发布时间】:2020-12-04 10:35:49
【问题描述】:

我尝试从函数中计算值:

而我目前写的循环函数是:

但是,即使它可以运行,但是当我将此函数应用于我的数据时,会出现一个错误:“错误:未使用的参数 (.)”可能是因为 y[q,k] <- ((3+0.01*(q-1))^(-(1:k)))*sum(cumprod(px[1:k])) 错误?但它看起来像我想要的方程。任何人都知道我该如何解决这个问题?提前致谢。

Y <- function(x){
  k <- 50-x
  Cset <- seq(0,0.2,0.01)
  y <- matrix(length(Cset)*k,ncol = k)
  for(C in seq_along(Cset)){
    for(s in 1:k){
      y[C,s] <- sum((3+C)^(-s)*cumprod(data$Bx[1:s]))
    }
  }
  y
}

Y(x=30)

错误显示

Error in `[<-`(`*tmp*`, C, s, value = sum((3 + C)^(-s) * cumprod(data$px[1:s]))) : 
  subscript out of bounds

【问题讨论】:

  • 试试Y(x = 30)
  • 感谢您的回复。但是,并非如此,我的循环本身存在一些错误。 :(
  • 我对@9​​87654327@ 也有误。你应该检查一下!
  • 是的,应该是Bx,但还是不行。
  • 在函数范围内变量名有很多冲突的地方,你应该避免这种情况

标签: r function loops package


【解决方案1】:

也许你可以试试下面的代码

Y <- function(x){
  k <- 50-x
  Cset <- seq(0,0.2,0.01)
  y <- matrix(length(Cset)*k,ncol = k)
  for(C in seq_along(Cset)){
    for(s in 1:k){
      y[C,s] <- (3+C)^(-s)*sum(cumprod(Bx[1:s]))
    }
  }
  y
}

【讨论】:

  • 再次感谢您的帮助!!!是的,还是不行。 :(
  • @ScarlettZhao 我更新了答案,请查看
  • @ScarlettZhao 我不知道它是如何与管道一起工作的。要测试函数本身,最好将参数设置为全局变量,然后运行函数Y
  • @ScarlettZhao 您的函数只接受单个参数x。也许你需要定义函数让它先读取数据(抱歉我没有使用管道的经验)
  • @ScarlettZhao 你可以把它设为全局变量
猜你喜欢
  • 2020-12-04
  • 1970-01-01
  • 2019-09-15
  • 1970-01-01
  • 1970-01-01
  • 2013-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多