在 R Shiny 中动态创建单选按钮

Posted

技术标签:

【中文标题】在 R Shiny 中动态创建单选按钮【英文标题】:Dynamically create radio buttons in R shiny 【发布时间】:2022-01-11 14:25:13 【问题描述】:

我目前正在 R 中修改 闪亮的仪表板,需要根据在我的 服务器类中创建的矢量内容动态创建单选按钮: p>

available_years <- c("2019", "2020", "2021") 
output$available_years <- reactive(available_years) 
outputOptions(output, "available_years", suspendWhenHidden = FALSE)

UI 类中,我想用它来创建这样的单选按钮:

fluidRow(
                  #Input Buttons for years 
                  column(3, 
                         radioButtons("radioYear", h4(paste("Available years:")), 
                                      choices = list("2019" = "2019", 
                                                     "2020" = "2020", 
                                                     "2021" = "2021")))
                ),

但不是硬编码它,我想用向量的长度而不是 3 和向量的内容而不是硬编码的 list。 就伪代码而言,它看起来像这样:

 fluidRow(
              #Input Buttons for years 
              column(length(output.available_years), 
                     radioButtons("radioYear", h4(paste("Available years:")), 
                                  choices = list(for(i in length(output.available_years)
                                    output.available_years[i] = output.available_years[i]
                                  ))))
            ),

感谢您的帮助!

【问题讨论】:

【参考方案1】:

您可以在服务器函数中提供数据集以及render 命令,并在ui 函数中使用uiOutput 调用它们。这将使您能够根据向量动态获取值。

带有示例数据的代码:

Data <- c('2019', '2020', '2021', '2022')

ui <- fluidRow(
  #Getting values from server function
  uiOutput('radioYear')
)

server <- function(input, output) 
 output$radioYear <- renderUI(
   Data <- Data
   column(length(Data), 
      radioButtons("radioYear", h4(paste("Available years:")), 
                   choices = Data))
 )


shinyApp(ui, server)

【讨论】:

谢谢伊莎!成功了!

以上是关于在 R Shiny 中动态创建单选按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 R Shiny 中的单选按钮显示输出?

如何在 R Shiny App 中保留复选框中的值?

R闪亮:如何将滑块和单选按钮链接到ggplot

在动态创建单选按钮方面需要帮助

如何在Shiny中对radioButtons的数据进行不同的处理?

在 ListView.builder() 中动态创建单选按钮组