我有一个相当复杂的Shiny应用程序并且发生了一些奇怪的事情: 当我打印出App的一些中间步骤时,所有内容都会被打印两次。这意味着,一切都得到评估等两次。
我知道没有看到程序很难分辨导致问题的原因,但也许有人可以指出我(基于经验/知识)可能是什么问题。
答案 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
,以防止我的绘图发生变化而导致再次评估画笔事件。