隐藏闪亮的输出

时间:2015-06-03 03:54:15

标签: r shiny r-markdown

如何隐藏渲染的shiny输出?具体来说,我有shiny生成的一些数字/表格,我有一个按钮,单击时应隐藏数字/表格,再次点击时应显示它们。

这是我到目前为止(下面),它有点工作,但它应该隐藏renderPlot输出,我正在尝试的文档中有一个很大的空白离开。

应该可以将这些代码复制并粘贴到Rstudio中并点击运行文档(它具有闪亮的运行时的rmarkdown)。

---
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

1 个答案:

答案 0 :(得分:13)

您可以使用shinyjs包隐藏具有hide()功能的元素(或使用toggle()功能在隐藏和显示之间切换)。免责声明:我写了那个包。

我以前从未在rmarkdown中使用它,所以我只是展示如何在普通的闪亮应用程序中使用它,并使用shinyApp()函数在rmarkdown中包含一个完整的闪亮应用程序。您可以阅读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)
)
```

为了能够使用hide,我必须:

  • 安装并加载shinyjs
  • 在用户界面中添加对useShinyjs()的调用
  • 在要隐藏/显示的元素上调用hidetoggle

我希望这会有所帮助