其中一个删除的列出现时,试图隐藏索引列在r光泽呈现表

wvt8vs2t  于 2023-01-22  发布在  其他
关注(0)|答案(1)|浏览(93)

在下面的代码中,我尝试使用rowname=FALSE从R shiny rended table中删除索引列。但是不知何故,删除的列"schema"仍然出现在rended table中。我不明白代码的问题出在哪里。非常感谢任何帮助。
数据:

schema  gruppe  name    Week    dose    symptome
A         A1    XXX        1    1.2     HA
A         A2    YYY        2    11.2    DI
B         A1    XXX        1    1.2     HA
B         A2    YYY        2    11.2    DI
C         A1    XXX        1    1.2     HA
C         A2    YYY        2    11.2    DI
D         A1    XXX        1    1.2     HA
D         A2    YYY        2    11.2    DI
E         A1    XXX        1    1.2     HA
E         A2    YYY        2    11.2    DI
F         A1    XXX        1    1.2     HA
F         A2    YYY        2    11.2    DI
output$table <- DT::renderDataTable({
   hide_columns <- which(names(filteredData()) %in% c("schema", "gruppe","name", "dose", "symptome"))
    datatable(filteredData(), extensions='Buttons', rownames=FALSE,  options=list(columnDefs = list(list(visible=FALSE,  targets=hide_columns))))
  })
4szc88ey

4szc88ey1#

在您的例子中,Week应该被打印出来,问题的原因是datatable(DT包)是一个Javascript库的 Package 器,而R将1n作为第一个索引计数,而Javascript使用0(n-1)
从列索引中减去1,您将只看到week列。

library(shiny)
library(DT)

ui <- fluidPage(
  dataTableOutput("table")
)

server <- function(input, output, session) {
  filteredData <- reactiveVal(
    data.frame(
      schema = letters[1:5], gruppe = LETTERS[1:5], name = paste0("name", 1:5),
      week = 1:5,
      dose = 1:5, symptome = letters[1:5]
    )
  )
  
  output$table <- DT::renderDataTable({
    hide_columns <- which(names(filteredData()) %in% c("schema", "gruppe", "name", "dose", "symptome"))-1L
    datatable(filteredData(), extensions='Buttons', rownames=FALSE,  
              options=list(columnDefs = list(list(visible=FALSE,  targets=hide_columns))))
  })  
}

shinyApp(ui, server)

相关问题