列标题未正确对齐

时间:2018-01-08 06:19:11

标签: r shiny dt

考虑一个Basic DataTable,其代码如下(在此链接上呈现和相同的代码:https://shiny.rstudio.com/gallery/basic-datatable.html

列标题与表值不完全对齐;标题位于值的右侧,大约一个字符。

enter image description here

是否有设置消除标题中的这种差距?在参考文档时,我注意到renderDataTable有一个options参数,这可能是https://datatables.net/reference/option/中的一个选项。在'column'的此列表中搜索,最佳匹配为columns.contentPadding,但从'mmm'更改为''似乎没有任何影响(尽管我可能是错误地实施它):

options = list(columns.contentPadding = "",  # or contentPadding = ""
                autoWidth = FALSE))

server.R

# Load the ggplot2 package which provides
# the 'mpg' dataset.
library(ggplot2)

function(input, output) {

  # Filter data based on selections
  output$table <- DT::renderDataTable(DT::datatable({
    data <- mpg
    if (input$man != "All") {
      data <- data[data$manufacturer == input$man,]
    }
    if (input$cyl != "All") {
      data <- data[data$cyl == input$cyl,]
    }
    if (input$trans != "All") {
      data <- data[data$trans == input$trans,]
    }
    data
  }))

}

ui.R

# Load the ggplot2 package which provides
# the 'mpg' dataset.
library(ggplot2)

fluidPage(
  titlePanel("Basic DataTable"),

  # Create a new Row in the UI for selectInputs
  fluidRow(
    column(4,
        selectInput("man",
                    "Manufacturer:",
                    c("All",
                      unique(as.character(mpg$manufacturer))))
    ),
    column(4,
        selectInput("trans",
                    "Transmission:",
                    c("All",
                      unique(as.character(mpg$trans))))
    ),
    column(4,
        selectInput("cyl",
                    "Cylinders:",
                    c("All",
                      unique(as.character(mpg$cyl))))
    )
  ),
  # Create a new row for the table.
  fluidRow(
    DT::dataTableOutput("table")
  )
)

1 个答案:

答案 0 :(得分:1)

这是一个简单的样式问题。

使用常规数据表样式表,表格标题包含10px 18px,而正文单元格为8px 10px

这些选项不能通过datatables api获得。

您唯一的选择是覆盖其中一种细胞类型的样式。这是一个添加,重新定义标题中的填充以匹配正文。 (要添加到ui定义中的任何位置。)

tags$head(tags$style("
  table.dataTable thead th {
    padding: 8px 10px !important;
  }
"))