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)