我正在从事一个项目,该项目需要许多选择器,这些选择器实际上执行相同的操作。我不能在Shiny Dashboard中多次使用相同的renderUI输出,因此我不得不复制,粘贴和更改小东西(例如变量名)来克服这一问题。但是,仪表板的代码现在接近一千行,我想使用一个函数来简化此过程,在该函数中,我可以传递参数并输出唯一的renderUI对象。以下是我创建的类似renderUI选择器的示例:
# Region Picker
output$picker_Region_Map <- renderUI({
ls_regions_map <- df_raw %>%
distinct(Region) %>%
pull()
pickerInput(
inputId = "mapRegion"
, label = "Region"
, choices = ls_regions_map
, multiple = TRUE
, selected = ls_regions_map
, options = list(`actions-box` = TRUE))
}) #renderUI End
# Campus Picker
output$picker_Campus_Map <- renderUI({
ls_campus_map <- df_raw %>%
filter(Region %in% input$mapRegion) %>%
distinct(Campus) %>%
pull()
pickerInput(
inputId = "mapCampus"
, label = "Campus"
, choices = ls_campus_map
, multiple = TRUE
, selected = ls_campus_map
, options = list(`actions-box` = TRUE))
}) #renderUI End
和
# Region Picker
output$picker_Region<- renderUI({
ls_regions <- df_raw %>%
distinct(Region) %>%
pull()
pickerInput(
inputId = "inRegion"
, label = "Region"
, choices = ls_regions
, multiple = TRUE
, selected = ls_regions
, options = list(`actions-box` = TRUE))
}) #renderUI End
# Campus Picker
output$picker_Campus <- renderUI({
ls_campus <- df_raw %>%
filter(Region %in% input$inRegion) %>%
distinct(Campus) %>%
pull()
pickerInput(
inputId = "inCampus"
, label = "Campus"
, choices = ls_campus
, multiple = TRUE
, selected = ls_campus
, options = list(`actions-box` = TRUE))
}) #renderUI End
有人曾有过这种经历吗?有什么建议吗?
这是我在网站上的第一个问题,因此,如果任何内容的格式不正确或不符合准则/规定,请告诉我!
谢谢!
这是我可能会开始重构校园选择器的方式。
这将显示在我的全局脚本中:
standardPicker <- function(.inputId, .label, .choices) {
pickerInput(inputId = .inputId, label = .label, choices = .choices,
selected = .choices, multiple = T, options = list('actions-box' = TRUE))
}
这将显示在我的服务器中:
ls_campus <- reactive({
df_raw %>%
filter(Region %in% input$inRegion) %>%
distinct(Campus) %>%
pull()
})
output$picker_Campus <- renderUI(standardPicker('inCampus','Campus',ls_campus())