在 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)
我目前正在 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)