r:在 Flexdashboard 中使用 Shiny 渲染 Kable

Posted

技术标签:

【中文标题】r:在 Flexdashboard 中使用 Shiny 渲染 Kable【英文标题】:r: Rendering Kable with Shiny in Flexdashboard 【发布时间】:2019-03-07 00:38:34 【问题描述】:

有没有办法使用 render__ 函数在 Flexdashboard 中使用 Shiny 渲染 Kable (knitr::)?我正在查找有关一般 Shiny-Kable 渲染的信息,但不是专门针对 Flexdashboard。像one 这样的链接很有帮助,但如果能够调用 render_ 函数在我的 Flexdashboard 中显示 Shiny 交互式 Kable,那就太好了。任何建议都会很棒!

谢谢!

斯蒂芬

【问题讨论】:

【参考方案1】:

以下是使其在flexdashboard 中工作的一种方法。

your_reactive_data <- reactive( your_data )

shiny::renderUI(
    html(
        kable(your_reactive_data())
    )
)

【讨论】:

对我不起作用,即使使用 r results='asis',它仍然只打印 ASCII |date |country |city |state | ||:----------|:-------|:----------|:-- .... 而不是漂亮的表格【参考方案2】:

上述答案不起作用(对我来说)。然而有效的是使用xtable::xtable() 而不是kable()。它们产生相似的输出,并且具有相应的renderTable() 函数。 (相对于 kable 还没有对应的 renderKable() 函数。

renderTable(
  your_reactive_data() %>% xtable::xtable()
)

【讨论】:

【参考方案3】:

正确的做法(根据this 文档)只是将代码包装在一个空函数中:

output$mtcars_kable <- function() 
 req(input$mpg)
 mtcars %>%
   mutate(car = rownames(.)) %>%
   select(car, everything()) %>%
   filter(mpg <= input$mpg) %>%
   knitr::kable("html") %>%
   kable_styling("striped", full_width = F) %>%
   add_header_above(c(" ", "Group 1" = 5, "Group 2" = 6))

我的猜测是因为kable_styling 函数已经生成了HTML,你不需要render*() 函数。

【讨论】:

以上是关于r:在 Flexdashboard 中使用 Shiny 渲染 Kable的主要内容,如果未能解决你的问题,请参考以下文章

在 R 中缩放 flexdashboard 仪表

R flexdashboard 删除标题栏

在flexdashboard中包含rmarkdown文本(includeMarkdown不起作用) (R)

防止导航栏在 flexdashboard R 中重叠内容

如果使用情节提要布局,如何在 R flexdashboard 页面上显示多个绘图

如何将带有 plotly 的 ggplot 嵌入到 r 闪亮的应用程序或 flexdashboard 中?