R “闪亮”中的动态下拉选择

R “闪亮”中的动态下拉选择,r,shiny,dplyr,R,Shiny,Dplyr,我试图创建一个动态下拉选择,其中较低的列表由较高的列表决定。在下面的示例中,我无法更改中间列表,它总是跳回第一个选项。你能帮我弄清楚吗 库(闪亮) 图书馆(dplyr) #数据输入和处理 数据%summary() ), 选择输入(“省”、“选择省或独立”,选项=NULL), 选择输入(“地区”、“选择此”,选项=NULL) ) ) #定义服务器逻辑 服务器%summary() zee%分组单位(地区)%>%汇总() 更新选择输入(会话,“省”,“选择省或独立城市”,选项=regsub) 更新选

我试图创建一个动态下拉选择,其中较低的列表由较高的列表决定。在下面的示例中,我无法更改中间列表,它总是跳回第一个选项。你能帮我弄清楚吗

库(闪亮)
图书馆(dplyr)
#数据输入和处理
数据%summary()
), 
选择输入(“省”、“选择省或独立”,选项=NULL),
选择输入(“地区”、“选择此”,选项=NULL)
)
)
#定义服务器逻辑
服务器%summary()
zee%分组单位(地区)%>%汇总()
更新选择输入(会话,“省”,“选择省或独立城市”,选项=regsub)
更新选择输入(会话,“地区”,“选择市镇或地区”,选项=provsub)
})
}
#运行应用程序
shinyApp(用户界面=用户界面,服务器=服务器)

您需要拆分观察代码,分别观察第一个和第二个下拉列表。 因为更改省选择将重新加载省列表

library(shiny)
library(dplyr)

# Data input and processing
dat <- data.frame(Region=c(rep("Reg 1", 6),
                           rep("Reg 2", 6),
                           rep("Reg 3", 6)),
                  Province=paste("Prov", c(rep("A", 2), "B", rep("C",3),"D",rep("E",4),"F",rep("G",3),rep("H",3))),
                  District=paste("Dist", letters[1:18]))


# Define UI 
ui <- fluidPage(

  verticalLayout(
    selectInput("region", "Select region",
                choices = dat %>% group_by(Region) %>% summarize()
    ), 
    selectInput("province", "Select province or indie", choices = NULL),
    selectInput("district", "Select this", choices = NULL)
  )
)

# Define server logic 
server <- function(input, output, session) {

  observe({
    y <- input$region

    regsub <- dat %>% filter(Region == y) %>% group_by(Province) %>% summarize()


    updateSelectInput(session, "province", "Select province or independent city", choices = regsub)




  })
  observe({
  zee <- input$province

  provsub <- dat %>% filter(Province == zee) %>% group_by(District) %>% summarize()

  updateSelectInput(session, "district", "Select municipality or district", choices = provsub)

  })
}

# Run the application 
shinyApp(ui = ui, server = server)
库(闪亮)
图书馆(dplyr)
#数据输入和处理
数据%summary()
), 
选择输入(“省”、“选择省或独立”,选项=NULL),
选择输入(“地区”、“选择此”,选项=NULL)
)
)
#定义服务器逻辑
服务器%summary()
更新选择输入(会话,“省”,“选择省或独立城市”,选项=regsub)
})
观察({
zee%分组单位(地区)%>%汇总()
更新选择输入(会话,“地区”,“选择市镇或地区”,选项=provsub)
})
}
#运行应用程序
shinyApp(用户界面=用户界面,服务器=服务器)
library(shiny)
library(dplyr)

# Data input and processing
dat <- data.frame(Region=c(rep("Reg 1", 6),
                           rep("Reg 2", 6),
                           rep("Reg 3", 6)),
                  Province=paste("Prov", c(rep("A", 2), "B", rep("C",3),"D",rep("E",4),"F",rep("G",3),rep("H",3))),
                  District=paste("Dist", letters[1:18]))


# Define UI 
ui <- fluidPage(

  verticalLayout(
    selectInput("region", "Select region",
                choices = dat %>% group_by(Region) %>% summarize()
    ), 
    selectInput("province", "Select province or indie", choices = NULL),
    selectInput("district", "Select this", choices = NULL)
  )
)

# Define server logic 
server <- function(input, output, session) {

  observe({
    y <- input$region

    regsub <- dat %>% filter(Region == y) %>% group_by(Province) %>% summarize()


    updateSelectInput(session, "province", "Select province or independent city", choices = regsub)




  })
  observe({
  zee <- input$province

  provsub <- dat %>% filter(Province == zee) %>% group_by(District) %>% summarize()

  updateSelectInput(session, "district", "Select municipality or district", choices = provsub)

  })
}

# Run the application 
shinyApp(ui = ui, server = server)