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

Dynamically create radio buttons in R shiny

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

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

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

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

但是我不想硬编码,而是想用向量的长度而不是 3 和向量的内容而不是硬编码列表。 在 伪代码 方面,它看起来像这样:

 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]
                                  }))))
            ),

感谢您的帮助!

您可以在服务器函数中提供数据集以及 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)