在R Shiny中动态生成模块和访问值

时间:2019-05-13 16:06:49

标签: r shiny shiny-reactivity shinymodules

我试图让用户在Shiny应用程序中将文本框作为模块生成,以便将其输入包含在该应用程序生成的R降价报告中。

我(终于)成功了,但是我所做的事情感觉很棘手,而且可能是不好的做法。我使用以下代码托管应用程序的这一部分:https://olivrm.shinyapps.io/add_modules/

我不满意的部分是:

  • <div id="wrapper"> <svg id="meter"> <circle id="low" r="150" cx="50%" cy="50%" stroke="#FF0000" stroke-width="60" stroke-dasharray="707, 943" fill="none"></circle> <circle id="avg" r="150" cx="50%" cy="50%" stroke="#FFFF00" stroke-width="60" stroke-dasharray="471, 943" fill="none"></circle> <circle id="high" r="150" cx="50%" cy="50%" stroke="#008000" stroke-width="60" stroke-dasharray="236, 943" fill="none"></circle> <circle id="mask" r="150" cx="50%" cy="50%" stroke="#a9a9a9" stroke-width="65" fill="none"></circle> </svg> </div> </app-shell> </template> <script> var cf = 943; var semi_cf = 250; document.querySelector('#mask').setAttribute("stroke-dasharray", semi_cf + "," + cf); </script>内部的所有事件。我将输入保存为默认文本框值,因为每次添加新组件时它们都会重新生成。
  • 我访问文本框输入的方式来创建反应式observeEvent(input$add_module, {...}。使用textsparse()似乎不太好,但是我不知道该如何使用其他内容。

那么关于一个特定问题:您应该如何动态地将模块添加到Shiny应用程序,以及如何访问它们的返回值?

我以前从未使用过Shiny,所以我很想知道处理这种事情的“正确”方法。

这是代码,以防Shinyapps.io无法正常工作(或稍后删除)。

eval()

0 个答案:

没有答案