我有一个数据框df
,其列名包含下划线。我想使用knitr::kable(df, ...)
对其进行格式化。当它与rmarkdown
一起使用时,你可以传递一个很好的列名列表,它还会自动将名称分布在多行上,使表适合页面。
但是,我正在尝试将kable
与Shiny一起使用。也就是说,我希望renderXXX()
类型输出写入output
对象,以便我可以从ui.R
调用我的好表。我试过server.R
:
renderText(
knitr::kable(df, format = "html")
)
和ui.R
:
htmlOutput("results_table")
但这只会导致一张非常凌乱的桌子。
答案 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中使用更强大的数据表,并且能够广泛地自定义外观,请尝试: