如何在rmarkdown / knitr交互式Shiny文档中使展示模式工作?

时间:2017-04-19 19:24:26

标签: r shiny markdown rstudio knitr

我从this question了解到,您可以将shinyApp选项设置为showcase mode,以便在用户与您的应用程序交互时可视化(即突出显示)您的Shiny代码的哪些部分正在执行。

但是,当我尝试使用knitr / R markdown将其应用于交互式Shiny文档时,展示的代码无法显示。

如何让showcase mode在互动文档中发挥作用?

示例:

---
title: "Showcase Mode Doesn't Work in knitr"
output:  html_document
runtime: shiny
---

See, look, no highlatable code shows up with the app:

```{r, echo=FALSE}
library(shiny)
ui <- fluidPage(
  textInput(inputId = 'textin', label = ''),
  textOutput(outputId = 'textout')
)
server <- function(input, output){
  output$textout <- renderText({input$textin})
  }
shinyApp(ui = ui, server = server, options = list(display.mode='showcase'))
```

1 个答案:

答案 0 :(得分:2)

您无法为showcase mode文档指定markdown的原因很简单 - 它不存在。

Knitr(和Rmarkdown个文档)预先在html页面中呈现输出结果。对于交互式html文档,它会预先渲染您的&#34;渲染对象的所有输出&#34;并根据输入指定在它们之间切换(如果我理解今年谢毅辉在Rconf给出的解释)。

而在shiny中,输出是动态生成的,因为有一个后端(您的计算机,服务器等)在输入更改时运行代码new。这就是为什么你可以打开showcase并看到那些变化并动态重新运行的原因。