使用observeEvent更新闪亮的输入

时间:2019-01-13 20:56:19

标签: r shiny

我希望用户定义一个初始数值,然后在每次单击操作按钮时将其更新(即增加)一个设定值。我使用reactValid尝试进行此更新,但是却出现了可怕的 Operation,如果没有活动的active context 错误,则不允许这样做。我很困惑,因为我以为使用reactVal 正在反应式表达式中做某事,但是显然我错了。

我一直在寻找相关的问题/文章/教程,但空着。任何建议深表感谢。并且请让我知道是否有更好的方法来完成此任务,即我是否应该使用其他函数或方法。

下面是我的代码的精简版本:

$ cat file | tr '\n' ' ' | sed -E 's/ ("[^"]*")/\n\1/g'

1 个答案:

答案 0 :(得分:1)

以下作品。当向您报告时,您不允许做的事情。使用i()的{​​{1}}的初始化需要反应性上下文。

可以通过在想要的初始值(input$init.i)上再设置一个observeEvent来实现预期效果,并将其反应性值设置为该值。

input$init.i

此外,也不需要将library(shiny) ui <- fluidPage( ## initilize the value numericInput('init.i','initial i', 10), ## click this button to add one to the initial value actionButton("run","Run"), ## output the current count textOutput("cur.i") ) server <- function(input,output) { ## Define the reactive value (with no 'inital' value) i <- reactiveVal() ## Set i() based on "initialize" input widget observeEvent(input$init.i, { i(input$init.i) }) observeEvent(input$run, { ## make a new value by adding 1 to the current value new.i <- i() + 1 ## update the value i(new.i) }) output$cur.i <- renderText({ i() }) } shinyApp(ui = ui, server = server) 嵌套在renderText内。