小编Cze*_*law的帖子

Shiny(R)中的自引用反应变量

我正在构建一个闪亮的应用程序,定期读取新数据,然后使用该数据和先前的参数估计来产生新的参数估计(等等无限制).

问题是参数必须通过响应来更新数据更新时,还需要引用其先前的值,我不知道如何使用其当前值来计算其下一个值而没有闪亮的抱怨无限递归.下面是一个最小的例子,它打算打印一个每秒递增1的值.

library(shiny)

omega <- 0

# Define the UI
myui <- basicPage(  
    textOutput('var')
)

# Define the server code
myserver <- function(input, output, session) {

    omega <<- reactive({
        invalidateLater(1000, NULL)
        return(omega() + 1)
    })

    output$var <- renderText(omega())
}


# Return a Shiny app object
shinyApp(ui = myui, server = myserver)
Run Code Online (Sandbox Code Playgroud)

这会产生以下错误

evaluation nested too deeply: infinite recursion / options(expressions=)?
Run Code Online (Sandbox Code Playgroud)

如果我尝试通过使用isolate()来保护对omega中的omega()的调用,我会从C堆栈溢出中获得段错误.

有没有办法来解决这个问题?或者也许是一个更好的方式来做我想要的闪亮?

recursion r reactive-programming shiny

5
推荐指数
1
解决办法
757
查看次数

标签 统计

r ×1

reactive-programming ×1

recursion ×1

shiny ×1