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的主要内容,如果未能解决你的问题,请参考以下文章
在flexdashboard中包含rmarkdown文本(includeMarkdown不起作用) (R)