首页 > 解决方案 > 在 Shiny 中重命名 DT 中的列名

问题描述

有没有办法在闪亮的 DT 表中重命名列名。我原来在DT中的列名如下图

colnames(DT_table) <- c("AB", "BC", "CD")

##rename column names to (inside renderDT)
colnames(DT_table) <- c("AB", "New BC", "New CD")


    output$table <- DT::renderDT({           
        datatable(
            DT_table,
            rownames = F, 
            escape = FALSE,
        ) 
    })

标签: shiny

解决方案


您可以在服务器内部、服务器外部或renderDT. 不知道为什么这对你不起作用。由于数据是静态的,因此我在服务器之外执行此操作。如果数据根据用户输入发生变化,则仅在服务器内部执行此操作,但它也可以在那里工作。

library(shiny)

ui <- fluidPage(
  DT::DTOutput("table")
)

DT_table <- data.frame(a = 1:10, b = 11:20, c = 21:30)

colnames(DT_table) <- c("AB", "BC", "CD")

server <- function(input, output, session) {

  output$table <- DT::renderDT({ 

    ##rename column names to (inside renderDT)
    colnames(DT_table) <- c("AB", "New BC", "New CD")

    DT::datatable(
      DT_table,
      rownames = F, 
      escape = FALSE,
    ) 
  })
}

shinyApp(ui, server)

输出

renderDT()您可以在调用之前将新的列名放入其中,datatable()输出将显示renderDT调用中的列名。见下文:

library(shiny)

ui <- fluidPage(
  DT::DTOutput("table")
)

DT_table <- data.frame(a = 1:10, b = 11:20, c = 21:30)

colnames(DT_table) <- c("AB", "BC", "CD")

server <- function(input, output, session) {

  output$table <- DT::renderDT({ 

    ##rename column names to (inside renderDT)
    colnames(DT_table) <- c("AB", "Changed BC", "Changed CD")

    DT::datatable(
      DT_table,
      rownames = F, 
      escape = FALSE,
    ) 
  })
}

shinyApp(ui, server)

在此处输入图像描述


推荐阅读