我正在开发一个闪亮的应用程序,用户可以在一个大型数据集中选择多个列来创建该数据集的子集。我使用DT包在闪亮的应用程序中很好地呈现了表格。
我以前使用的是DT软件包的0.2版,以下代码在起作用:
- job_name: 'Kubernetes'
scheme: https
tls_config:
insecure_skip_verify: true
bearer_token: %VeryLongLine%
kubernetes_sd_configs:
- api_server: https://%ClusterName%.hcp.westeurope.azmk8s.io
tls_config:
insecure_skip_verify: true
role: node
namespaces:
names: [default]
不幸的是,此代码不再起作用(我现在的版本为0.4)。 library("DT")
library("shiny")
ui <- fluidPage(
DT::dataTableOutput('table1'),
DT::dataTableOutput("table2")
)
server <- function(input, output) {
output$table1 <- DT::renderDataTable({
datatable(mtcars, extensions = 'Select', selection = 'none', options = list(ordering = FALSE, searching = FALSE, pageLength = 25, select = list(style = 'os', items = 'column')),
callback = JS(
"table.on( 'click.dt', 'tbody td', function (e) {",
"var type = table.select.items();",
"var idx = table[type + 's']({selected: true}).indexes().toArray();",
"var DT_id = table.table().container().parentNode.id;",
"Shiny.onInputChange(DT_id + '_columns_selected', idx);",
"})"
))
})
output$table2 <- DT::renderDataTable({
subset_table <- mtcars[,input$table1_columns_selected]
datatable(subset_table)
})
}
shinyApp(ui = ui, server = server)
不会呈现所选列的索引。
根据此https://rstudio.github.io/DT/shiny.html,现在有一种功能可以选择多行,但我不知道如何对列进行相同的操作。
有什么主意吗? 非常感谢您的帮助!
答案 0 :(得分:1)
我不确定为什么需要使用callback参数来执行此操作。这是一种简化的方法-
library("DT")
library("shiny")
ui <- fluidPage(
DT::dataTableOutput('table1'),
DT::dataTableOutput("table2")
)
server <- function(input, output) {
output$table1 <- DT::renderDataTable({
datatable(mtcars, extensions = 'Select', selection = list(target = "column"), options = list(ordering = FALSE, searching = FALSE, pageLength = 25))
})
output$table2 <- DT::renderDataTable({
subset_table <- mtcars[, input$table1_columns_selected, drop = F]
datatable(subset_table)
})
}
shinyApp(ui = ui, server = server)
请注意datatable
中output$table1
参数中的更改。希望这就是您想要的。
答案 1 :(得分:0)