R Shiny:如何构建一个函数来在 R 中创建许多类似的 renderUI 选择器?
R Shiny: How to build a function to create many similar renderUI pickers in R?
我正在从事一个项目,该项目需要许多本质上做同样事情的挑选器。我不能在 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())
我正在从事一个项目,该项目需要许多本质上做同样事情的挑选器。我不能在 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())