2017-04-27 57 views

回答

3

这可能是有趣的你:https://www.r-bloggers.com/announcing-shinytester-a-package-that-helps-you-build-shiny-apps/

它引入了一个与该功能 ShinyHierarchy()称为shinyTester库。 有关该文章的示例,请参阅下图。 enter image description here

+0

我喜欢那个包,不知道它。将在这些日子中的一件大事上尝试一下。 –

+0

如果您有很多节点并且想要仔细分析并静态分析,这可能会更好。我在下面发布的内置可视化工具非常具有启发性,因为您可以了解依赖关系是如何动态构建和跟踪的 - 这是静态工具无法真正捕获的。但是它也很容易混淆。 –

+1

你是对的Mike,他们可能应该同时使用。我不知道“反应日志可视化器”。关于闪亮应用程序的“大小”,如果您可以(添加)“ShinyHierachy()”中的功能,使您可以过滤部分闪亮的应用程序,以便控制图表的大小,这可能会很有趣。 – BigDataScientist

3

有一个闪亮的“反应日志可视化”内置闪亮。它逐渐建立一个图表,显示各个反应节点如何相互依赖。运行后,其输出是这样的:在使用此工具

enter image description here

说明可以在这里找到:Reactive Log Visualizer

这是我对这个工具的注意事项:

  • 已启用在shinyApp调用之前插入options(shiny.reactlog = TRUE)
  • 它会记录节点如何激活对方的日志。
  • 日志观察器然后可以用Ctrl-F3(或Command-F3苹果)
  • 启用有可手动覆盖的节点坐标制图。当显示大量节点以防止线路相互交叉时,这可能是具有挑战性的。
  • 然后,您可以使用箭头键在日志中移回(基本上您正在日志中移动)。
  • 这里解释了被动符号:Shiny Reactivity Overview
  • 它暴露了很多对用户不可见的反应活动,因此可能会引起混淆。
  • 它不适用于大型Shiny应用程序 - 此工具的许多方面根本无法扩展。
+1

这个答案也是非常有用的,thx。由于上面提到的警告,看来shinyTester会错过一些事件。反应日志可视化工具记录一切,几乎太多:) –

+0

谢谢。当我解决它时,会做静态与动态闪亮节点分析器的优缺点列表。 –

+1

感谢您的概述!一个小的评论,对于“闪亮的反应性概述”,我想这个链接是不存在的。 – BigDataScientist

2

反应式日志可视化器是一个功能强大的工具,但不幸的是,无法像@Mike Wise指出的那样在较大的应用程序中进行扩展。前一段时间,我阅读了一些有趣的想法来改进rstudio/shiny#1846rstudio/shiny#1532的调试体验,并开始探索实现它们的方法。

经过磕磕绊绊(summary)后,我发现最好的方法是解析原始的反应日志并从中构建一个依赖关系图。

包装在https://github.com/glin/reactlog。这两个主要特点是:

显示触发失效

observe({ 
    reactlog::traceInvalidation() 
    rx() 
}) 
4: observe({ 
     reactlog::traceInvalidation() 
     rx() 
    }) 
3: rx [<text>#7] 
2: val => num 10 
1: observe(val(10)) 

,并在树视图

observe({ 
    reactlog::listDependencies() 
    rxA() + rxB() + rxAB() 
}, label = "obs") 
obs* 
+-- rxA* 
| `-- valA* 
+-- rxB 
| `-- valB 
`-- rxAB* 
    +-- valA* 
    `-- valB 
上市活性依赖调用堆栈

树视图可能对查看多个依赖关系是否失效特别有用(星号表示失效或更改)。

+0

辉煌。工作很好。 –