【发布时间】:2016-12-15 18:30:37
【问题描述】:
我正在尝试在 Shiny 中创建一些反应式单选按钮,但遇到了一些问题。下面的代码创建了我所看到的示例。例如,数字有 3 种选择 - 1、2 和 3。每一种都有自己可能的字母选择 - 如果选择 1 或 3,则 A 或 B 可用,但如果选择 2,则 A、B、或 C 可用。
问题在于我希望第二组单选按钮仅显示可用的选项,具体取决于数字选择。但是,每次我选择一个新数字时,字母选择都会重置。因此,如果我选择了 2 和 B,然后将数字更改为 1,它会自动将字母选择更改为 A。我希望保留第二个选择,如果它是一个选项,例如,如果我选择了 2 和 B,然后我可以将数字更改为我喜欢的任何数字,并且 B 将保持选中状态。但是如果我选择了 2 和 C,然后将数字更改为 1,显然 1 下没有 C,那么它必须重置为某个默认值(A,很可能)。
我将如何设置单选按钮以这种方式运行?
library('shiny')
library('shinydashboard')
# Input Data
inputData <- data.frame(a = c(1, 1, 2, 2, 2, 3, 3),
b = c('A', 'B', 'A', 'B', 'C', 'A', 'B')
)
# Body #############################
body <- dashboardBody(
radioButtons('selectA', 'Select Number',
choices = unique(inputData$a)),
uiOutput('selectB')
)
# UI #############################
ui <- dashboardPage(
dashboardHeader(title = 'Test', titleWidth = 290),
dashboardSidebar(width = 290),
body
)
# Server #############################
server <- function(input, output){
output$selectB <- renderUI({
radioButtons('selectB', 'Select Letter',
choices = unique(inputData[inputData$a == input$selectA, ]$b),
inline = TRUE)
})
}
shinyApp(ui, server)
【问题讨论】:
标签: r radio-button shiny