隐藏闪亮的输出

Hide shiny output

如何隐藏呈现的 shiny 输出?具体来说,我有一些 shiny 生成的 figures/tables 并且我有一个按钮,单击时应该隐藏 figures/tables,再次单击时应该显示它们。

这是我目前所拥有的(下图),它有些工作,但是它应该隐藏 renderPlot 输出的地方,文档中有一个很大的空白 space 我我正在努力让自己离开。

应该可以将此代码复制并粘贴到 Rstudio 中并点击 运行 文档(它是 rmarkdown with shiny 运行time)。

---
runtime: shiny
---

```{r, echo=F}
actionButton("hide", "Hide")
dat <- data.frame(a=1:10, b=rexp(10, 1/10), c=letters[sample(1:24, 10)])
renderTable({
    if (input$hide %% 2 == 1)
        dat
})

```
lodi dodi

```{r, echo=F}
renderPlot({
    if (input$hide %% 2 == 1)
        plot(b ~ a, data=dat)
})

```
this text is separated by blank space, but it shouldn't be

您可以使用 shinyjs 包通过 hide() 函数隐藏元素(或使用 toggle() 函数在隐藏和显示之间交替)。免责声明:我写了那个包。

我以前从未在 rmarkdown 中使用过它,所以我将展示如何在普通的 shiny 应用程序中使用它,并使用 shinyApp() 函数在 rmarkdown 中包含一个完整的 shiny 应用程序降价。您可以阅读 here 了解如何在 rmarkdown 文档中包含闪亮的应用程序。

---
runtime: shiny
---

```{r, echo=F}
suppressPackageStartupMessages(
  library(shinyjs)
)

dat <- data.frame(a=1:10, b=rexp(10, 1/10), c=letters[sample(1:24, 10)])

shinyApp(
  ui = fluidPage(
    useShinyjs(),
    actionButton("hide", "Hide"),
    p("Text above plot"),
    plotOutput("plot"),
    p("Text below plot")
  ),
  server = function(input, output, session) {
    output$plot <- renderPlot({
      plot(b ~ a, data=dat)
    })

    observeEvent(input$hide, {
      hide("plot")
      # toggle("plot") if you want to alternate between hiding and showing
    })
  },
  options = list(height = 700)
)
```

为了能够使用隐藏,我必须:

  • 安装并加载shinyjs
  • 在 UI
  • 中添加对 useShinyjs() 的调用
  • 在您想要 hide/show
  • 的元素上调用 hidetoggle

希望对您有所帮助