Shiny R:当 selectInput 值改变时重置其他输入值
Posted
技术标签:
【中文标题】Shiny R:当 selectInput 值改变时重置其他输入值【英文标题】:Shiny R: Reset other input values when selectInput value changes 【发布时间】:2016-12-17 11:13:56 【问题描述】:我有一个简单的应用程序,用户从 selectInput (player_name
) 下拉列表中选择玩家的姓名,然后您可以从显示表格的 selectInputs (season
) 和 radioButtons (contested
) 中选择其他过滤器.在不使用提交或操作按钮的情况下,是否可以观察到player_name
值已更改,然后将season
和contested
输入重置为其默认值?通常,我会使用条件面板来更改输入,但在这种情况下,player_name
有成千上万的玩家。
【问题讨论】:
【参考方案1】:对此的基本解决方案是使用额外的uiOutput
"filters_UI" 来放置第二个 selectInput 和 radioButtons 并在其中添加 input$player_name
,因此每当玩家名称发生变化时,完整的 uiOutput
将使用初始值再次创建。请参阅下面的示例。
library(shiny)
ui <- fluidPage(
fluidRow(
column(6, uiOutput('controls_UI')),
column(6, DT::dataTableOutput("table_DT"))
)
)
server <- shinyServer(function(input, output, session)
# to simulate players
dat <- USJudgeRatings
players <- row.names(dat)
seasons <- names(dat)
output$controls_UI <- renderUI(
fluidRow(
column(6,
selectInput("player_name", "Players", players, selected = players[1])
),
column(6,
uiOutput("filters_UI"))
)
)
# render again if input$player_name changes
output$filters_UI <- renderUI(
input$player_name
fluidRow(
column(6,
selectInput("season", "Season", seasons, selected = seasons[1])
),
column(6,
radioButtons("contested", label = "Contested",
choices = list("Choice 1" = 1, "Choice 2" = 2, "Choice 3" = 3),
selected = 1)
)
)
)
output$table_DT <- DT::renderDataTable(
datR(),
options = list(
scrollX = TRUE,
paging = TRUE,
lengthMenu = c(10, 20, 50)
),
selection = "single",
rownames = TRUE
)
# creates a table based on the sliders and radio buttons
datR <- reactive(
input$player_name
varName <- input$season
contested <- ifelse(is.null(input$contested),1,as.integer(input$contested))
dat0 <- data.frame( dat[sample(2:length(players),contested*3), varName] )
names(dat0) <- varName
dat0
)
)
shinyApp(ui, server)
希望对你有帮助。
【讨论】:
以上是关于Shiny R:当 selectInput 值改变时重置其他输入值的主要内容,如果未能解决你的问题,请参考以下文章
R Shiny - 我无法从selectInput操作中检索选定的输出值
如何使用 actionButton 更改 R Shiny 中 selectInput 上的选定值?
如何在 selectInput R Shiny 中为一长串选项设置值
基于选项卡面板选择在 R Shiny 中显示/隐藏 selectinput