R Shiny - 使用 DataTable 移动列名称

Chi*_*ika 4 datatable r shiny dt

我有一个非常复杂的闪亮代码,其中有几个面板和这些面板内的几个表格。启动应用程序时,列名称与列值正确对齐。但是,一旦我更改应用程序表格下的页码,列名称就会移动到左侧,而值仍保留在中间。如何强制应用程序使列名称与列值对齐?

\n

一个可重现的例子:

\n
library(shiny)\nlibrary(dplyr)\nlibrary(DT)\nlibrary(dplyr)\n\nui <- fluidPage(\n  \n  titlePanel("Test Example"), \n  \n  fluidRow(\n    column(3, align="left",\n           \n           # Input: Quantile ----\n           selectInput(inputId = "Variable",\n                       label = "Variable :",\n                       choices = c(80, 85, 90, 95),\n                       selected = 90)),\n    \n    column(9,\n           tabsetPanel(\n             tabPanel("Table d\'\xc3\xa9v\xc3\xa8nements", verticalLayout(p(dataTableOutput("cars.table")),\n                                                           p(dataTableOutput("cars.table2"))))))\n  )\n)\n\nserver <- function(input, output) {\n  output$cars.table <- DT::renderDataTable({\n    df <- summarise(group_by(cars, speed), n=mean(dist))\n    df\n  }, options=list(autoWidth = TRUE, scrollX=T, pageLength=5), rownames= FALSE)\n  \n  output$cars.table2 <- DT::renderDataTable({\n    df1 <- summarise(group_by(cars, speed), n=max(dist))\n    df1\n  }, options = list(autoWidth = TRUE,scrollX=T,pageLength=10),rownames= FALSE)\n}\n\nshinyApp(ui = ui, server = server)\n
Run Code Online (Sandbox Code Playgroud)\n

我找到了这些主题:

\n

如何解决数据表中闪亮的未对齐问题?

\n

\n

列标题未正确对齐

\n

但它没有提供解决方案,我需要 autowidth=T 并且设置列大小不会改变任何未对齐问题。

\n

谢谢

\n

da1*_*1an 7

您需要将表格放置在一个容器中,该容器将内容(包括 DT 表标题)居中。通过将段落标签替换为 ,可以在保留当前页边距的同时完成此操作fluidRow(column(align = "center", ...。我已经调整了您的代码如下:

library(shiny)
library(dplyr)
library(DT)
library(dplyr)

ui <- fluidPage(
  
  titlePanel("Test Example"), 
  
  fluidRow(
    column(3, align="left",
           
           # Input: Quantile ----
           selectInput(inputId = "Variable",
                       label = "Variable :",
                       choices = c(80, 85, 90, 95),
                       selected = 90)),
    
    column(9,
           tabsetPanel(
             tabPanel("Table dvnements", verticalLayout(
               fluidRow(column(align = "center", width = 12, dataTableOutput("cars.table"))),
               fluidRow(column(align = "center", width = 12, dataTableOutput("cars.table2")))))))
  )
)

server <- function(input, output) {
  output$cars.table <- DT::renderDataTable({
    df <- summarise(group_by(cars, speed), n=mean(dist))
    df
  }, options=list(autoWidth = TRUE, scrollX=T, pageLength=5), rownames= FALSE)
  
  output$cars.table2 <- DT::renderDataTable({
    df1 <- summarise(group_by(cars, speed), n=max(dist))
    df1
  }, options = list(autoWidth = TRUE,scrollX=T,pageLength=10),rownames= FALSE)
}

shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)