你如何使用kable来整理Shiny输出中的数据帧

时间:2016-07-03 11:25:53

标签: r shiny

我有一个数据框df,其列名包含下划线。我想使用knitr::kable(df, ...)对其进行格式化。当它与rmarkdown一起使用时,你可以传递一个很好的列名列表,它还会自动将名称分布在多行上,使表适合页面。

但是,我正在尝试将kable与Shiny一起使用。也就是说,我希望renderXXX()类型输出写入output对象,以便我可以从ui.R调用我的好表。我试过server.R

renderText(

   knitr::kable(df, format = "html")
)

ui.R

htmlOutput("results_table")

但这只会导致一张非常凌乱的桌子。

2 个答案:

答案 0 :(得分:3)

我想你会在这里找到完整的答案: https://cran.r-project.org/web/packages/kableExtra/vignettes/use_kable_in_shiny.html

<强>更新
以mtcars数据集为例,首先将以下内容添加到您的ui部分:

mainPanel(
         tableOutput("mtcars_kable")
      )

并在服务器部分中执行以下操作:

library(kableExtra)
   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))
   }

答案 1 :(得分:2)

如果您想在Shiny中使用更强大的数据表,并且能够广泛地自定义外观,请尝试:

Using DT in Shiny