【问题标题】:Error of infinite recursion in R(Shiny)R(Shiny)中无限递归的错误
【发布时间】:2018-01-15 06:24:43
【问题描述】:

我正在研究贷款预测模型的 R(Shiny)。我正在尝试计算特定方法的贷款金额,但它向我显示了无限递归的错误,就像大多数帖子中提到的那样,即使我尝试了 options(expressions = 1000) 值,但是我仍然遇到错误。

如果我把我的条件写成

MDBB_LA<- reactive({ input$MDBB*10 }) 

那么它没有给我任何错误,但如果我在此添加另一个条件

 DSCR_Post<- reactive({
 if (input$MU == "EMM" & (input$EMIM/12)+EMI()!=0) {
  EBITDA_EMM()/((input$EMIM/12) + EMI())
} else if (input$MU == "EMM" & (input$EMIM/12)+EMI()==0) {
  0
} else if (input$MU != "EMM" & (input$EMIM/12)+EMI()!=0 ){
  EBITDA()/((input$EMIM/12) + EMI())
}else{
  0
}})

  MDBB_LA<- reactive({ if ((input$MU == "EMM" & DSCR_Post() >= 1) | (input$MU == "FAT1" & DSCR_Post() >= 0.8) | (input$MU == "FAT2" & DSCR_Post() >= 0.7) | (input$MU == "UAT" & DSCR_Post() >= 0.5)) {
  input$MDBB*10*2
} else if ((input$MU == "EMM" & DSCR_Post() < 1) | (input$MU == "FAT1" & DSCR_Post() < 0.8 ) | (input$MU == "FAT2" & DSCR_Post() < 0.7) | (input$MU == "UAT" & DSCR_Post() < 0.5)){
  input$MDBB*10
} else if ((input$MU == "MDBB1" ) | (input$MU == "MDBB2" ) | (input$MU == "MDBB3") | (input$MU == "MDBB4") ){
  input$MDBB*10
} else {input$MDBB*10}
})

然后它向我显示错误:

警告:错误:计算嵌套太深:无限递归/选项(表达式=)?

任何可以帮助我的人,逻辑语句出了什么问题。

【问题讨论】:

  • DSCR_Post() 长什么样子??
  • 你能举一个可复制的例子吗?为什么同一结果input$MDBB*10 有三个不同的条件?你可以只拥有一个全局的 else,不是吗?
  • DSCR_Post() 是我正在定义的一个函数,它正在执行一些计算
  • 我已经尝试过 if 和 else 条件,但它仍然给我同样的错误
  • 能否请您提供一个显示您的问题的完整应用程序的 MWE

标签: r recursion shiny shiny-server


【解决方案1】:

如果没有可重复的答案,这很难回答,但我知道在不调整代码或数据的情况下解决此问题的两种方法是增加表达式和 ppsize。尝试超过 1000,例如表达式的 1500 或 2000(甚至 20000)。还可以尝试在打开控制台时增加 --max-ppsize。

【讨论】:

  • 我想这可能是因为我正在使用方法 DSCR_Post 然后调用它。所以方法被多次调用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多