Shiny评估两次

时间:2015-11-19 14:35:50

标签: r shiny-server shiny

我有一个相当复杂的Shiny应用程序并且发生了一些奇怪的事情: 当我打印出App的一些中间步骤时,所有内容都会被打印两次。这意味着,一切都得到评估等两次。

我知道没有看到程序很难分辨导致问题的原因,但也许有人可以指出我(基于经验/知识)可能是什么问题。

2 个答案:

答案 0 :(得分:2)

就像我在评论中提到的那样,isolate()应该可以解决你的问题。 除了Rstudio http://shiny.rstudio.com/articles/reactivity-overview.html的文档之外 我推荐以下博客文章,了解RStudio文档之外的有趣信息。 https://shinydata.wordpress.com/2015/02/02/a-few-things-i-learned-about-shiny-and-reactive-programming/

简而言之,处理触发的最简单方法是将代码包装在isolate()中,然后记下变量/输入,这应该在隔离之前触发更改。

output$text <- renderText({
   input$mytext # I trigger changes
   isolate({ # No more dependencies from here on
     # do stuff with input$mytext
     # .....
     finishedtext = input$mytext
     return(finishedtext) 
   })
})

答案 1 :(得分:0)

brush中使用plotOutput事件时,我遇到了同样的问题。事实证明,调用resetOnNew = T时解决方案为plotOutput,以防止我的绘图发生变化而导致再次评估画笔事件。