我正在使用 selectizeGroupUI 在 Shiny 中创建动态过滤器。问题是我无法设置输出的默认选择,现在我的应用程序正在从两个现有过滤器中选择所有内容。这对我不起作用,因为包含所有数据的真实表非常大。所以,我想知道如何将特定的过滤器组合设置为默认值,这可以说明用户开始使用该应用程序,但不像现在选择每个组合那样大。
我知道如何通过使用设置默认选择
selectInput(...,selected = 'table1',...)
但现在我不知道如何使用 selectizeGroupUI 应用该逻辑。
在这里您现在可以看到我的代码,它同时显示所有过滤器组合:
library(shinyWidgets)
tf<-test_2_filtros
shinyApp(
ui = pageWithSidebar(
headerPanel("Conditional Filters"),
sidebarPanel(
selectizeGroupUI(
id = "my-filters",
inline = FALSE,
params = list(
var_one = list(inputId = "var_1", title = "Select variable 1", placeholder = 'select'),
var_two = list(inputId = "var_2", title = "Select variable 2", placeholder = 'select')
)
)
),
mainPanel(
DT::dataTableOutput("table")
)
),
server = function(input, output, session) {
res_mod <- callModule(
module = selectizeGroupServer,
id = "my-filters",
data = tf,
vars = c("var_1", "var_2")
)
output$table <- DT::renderDataTable({
req(res_mod())
mytable<-res_mod() %>%
dplyr::mutate(n = "Yes") %>%
mutate(row_num = 1:n()) %>%
tidyr::pivot_wider(names_from = var_3, values_from = n, values_fill = list(n = "No"))%>%
select(-row_num)
mytable<-DT::datatable(mytable, filter= 'top',options = list(order=list(0,'asc'), dom='t', pageLength= 100, autoWidth = TRUE),rownames = FALSE)
formatStyle(mytable, columns = NULL, fontWeight = styleEqual(c('No', 'Yes'), c('normal', 'bold')))
})
},
options = list(height = 500)
)
在这里你可以找到我的输入和输出:
输入(上面代码中的 tf)
var_1 | var_2 | var_3 |
---|---|---|
红色的 | 表格1 | 第 1 列 |
红色的 | 表格1 | 第 1 列 |
红色的 | 表格1 | 第 1 列 |
蓝色的 | 表2 | 第 2 列 |
蓝色的 | 表2 | 第 2 列 |
蓝色的 | 表2 | 第 2 列 |
绿色 | 表3 | 第 3 列 |
绿色 | 表3 | 第 3 列 |
绿色 | 表3 | 第 3 列 |
输出
var_1 | var_2 | 第 1 列 | 第 2 列 | 第 3 列 |
---|---|---|---|---|
红色的 | 表格1 | 是的 | 不 | 不 |
红色的 | 表格1 | 是的 | 不 | 不 |
红色的 | 表格1 | 是的 | 不 | 不 |
蓝色的 | 表2 | 不 | 是的 | 不 |
蓝色的 | 表2 | 不 | 是的 | 不 |
蓝色的 | 表2 | 不 | 是的 | 不 |
绿色 | 表3 | 不 | 不 | 是的 |
绿色 | 表3 | 不 | 不 | 是的 |
绿色 | 表3 | 不 | 不 | 是的 |
感谢您提供任何帮助或反馈。