我的 Shiny 网络应用程序中有一个数据表,我在其中插入了复选框。然而,我的实际数据集相当大。因此我想压缩数据表并分别减少填充。 虽然我已经找到了一些方法,但这不适用于复选框。
有人可以帮助我吗?
非常感谢!
这是我的可重现示例:
library(shiny)
library(DT)
library(tidyverse)
shinyApp(
ui <- fluidPage(
DT::dataTableOutput('x1')
),
server<-function(input, output, session) {
# create a character vector of shiny inputs
shinyInput<-function(FUN, len, id, ...) {
inputs <- character(len)
for (i in seq_len(len)) {
inputs[i] <- as.character(FUN(paste0(id, i), label=NULL, ...))
}
inputs
}
# a sample data frame
values <- reactiveValues(res=data.frame(
iris %>% slice(10),
v2=shinyInput(checkboxInput, 10, 'v2_', value=FALSE)
)
)
# render the table containing shiny inputs
output$x1 <- DT::renderDataTable(
datatable(values$res, escape = F),
server=FALSE,
escape=FALSE
)
}
)
最佳答案
你需要一点CSS 。严格来说,填充是很简单的。此规则的目标是包含在 ID 为“x1”的表中的表数据单元格元素 ( <td>
)
ui <- fluidPage(
DT::dataTableOutput('x1'),
tags$style(HTML("
#x1 td {
padding-top: 0;
padding-bottom: 0;
}
"))
)
这会压缩一些。如果您想进一步压缩它,您需要找到驱动行高的因素,然后确定目标。例如,复选框有下边距。您也可以删除它。如果您不知道,您可以使用浏览器的开发工具查看应用的 CSS。对于 Chrome,右键单击一行并选择“检查”
关于css - R 删除数据表单元格的填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75485729/