ボタンがクリックされたときにのみ SelectInput と PickerInput を更新するアクション ボタンを作成しようとしています。
library(shiny)
shinyUI(basicPage(
v1 <- c("a","b","c")
v2 <- 1:3
data <- data.frame(v1,v2)
pickerInput("v1",label = "v1",""),
uiOutput("secondSelection"),
actionButton("go", "Update")
))
shinyServer(function(input, output) {
output$secondSelection <- renderUI({
pickerInput("v2", "Variable 2:","")
})
v1vals <- reactiveValues(v1)
v2vals <- reactiveValues(v2)
observe({
if(input$go > 0) {
v1vals$v1<- levels(data$v1)
v2vals$v2<- levels(data$v2)
}
v1vals$v1<- input$v1
v2vals$v2<- input$v2
})
output$text <- renderText({values$variable})
observe( observeEvent(input$go, {
updatePickerInput(session,"v1",label = "variable 1",
choices = levels(data$v1),
selected = levels(data$v1), multiple = TRUE)
}))
observe( observeEvent(input$go, {
updatePickerInput(session, "v2", choices =
as.character(unique(data[data$v1==input$v1,"v2"])),
options = list(`actions-box` = TRUE),
multiple = TRUE, selected =levels(data$v2))
}))
})
v1 と v2 のデフォルトの選択はすべてのレベルであり、フィルターはアクション ボタンがクリックされたときにアプリの残りの部分のみを更新することを期待しています。