gpt4 book ai didi

r - 根据之前在 R Shiny 中的选择显示下拉选择

转载 作者:行者123 更新时间:2023-12-05 04:08:58 26 4
gpt4 key购买 nike

我是 RShiny 的新手。我想根据之前的选择填充 RShiny 下拉菜单。对于例如在下图中,用户首先选择“路线”,然后填充“日程”下拉列表,然后用户选择“日程”,然后填充“行程”下拉列表,然后用户选择“行程”输入。

enter image description here

这是我的代码:

library(shiny)
library("plotly")
library(lubridate)
require(rgl)
require(akima)
library(dplyr)
library(DT)

data335 <<- read.csv("final335eonly.csv")
#data335[c(2,4,5,8,9,10)] = lapply(data335[c(2,4,5,8,9,10)], as.numeric)


routes <<- as.vector(unique(data335[,'route_no']))

ui <- fluidPage(
titlePanel("Demand Analysis"),

selectInput("routeInput", "Select the route", choices = routes),
selectInput("scheduleInput", "Select the schedule", c("")),
selectInput("tripInput", "Select the trip", c(""))



)


server <- function(input, output, session) {

observeEvent(input$routeInput,
{

x <<- input$routeInput
updateSelectInput(session, "scheduleInput",
choices = data335[data335$route_no == input$routeInput, ]$schedule_no,selected = tail(x, 1)
)
}
)
observeEvent(input$scheduleInput,
{
y <<- input$scheduleInput
updateSelectInput(session, "tripInput",
choices = data335[(data335$route_no == input$routeInput & data335$schedule_no == input$scheduleInput), ]$trip_no,selected = tail(y, 1)
)
}
)


}
shinyApp(ui = ui, server = server)

所需的输入 csv 文件是 here :

每当我尝试运行这个看似简单的代码时,尽管出现了 UI,但当我尝试在下拉列表中选择输入时,RShiny 崩溃了。

你能告诉我这是什么原因造成的吗?

最佳答案

出现问题是因为您没有提供唯一值作为选择。 data335[data335$route_no == input$routeInput, ]$schedule_no具有导致崩溃的重复值。

此外,您正在选择 input$routeInput 的值在你的scheduleInput ,未在选择中列出的可能是崩溃的另一个原因。

只需注释这两个语句并在您的选择中添加 unique 即可解决崩溃问题。

正如@parth 在他的评论中指出的那样,您为什么要使用 <<-在你的代码中到处都是,没有必要。虽然这不是崩溃的原因,但除非你想在 sessions 之间共享变量使用<<-在服务器内部不是一个好习惯。

这是你的代码,注释部分有两个 selected参数评论和 unique添加有效:

library(shiny)
library("plotly")
library(lubridate)
require(rgl)
require(akima)
library(dplyr)
library(DT)

data335 <<- read.csv("final335eonly.csv", stringsAsFactors = FALSE)


routes <<- as.vector(unique(data335[,'route_no']))

ui <- fluidPage(
titlePanel("Demand Analysis"),

selectInput("routeInput", "Select the route", choices = routes),
selectInput("scheduleInput", "Select the schedule", c("")),
selectInput("tripInput", "Select the trip", c(""))



)


server <- function(input, output, session) {

observeEvent(input$routeInput,
{

x <<- input$routeInput
updateSelectInput(session, "scheduleInput",
choices =unique(data335[data335$route_no == input$routeInput, ]$schedule_no),#selected = tail(x, 1)
)
}
)
observeEvent(input$scheduleInput,
{
y <<- input$scheduleInput
updateSelectInput(session, "tripInput",
choices = unique(data335[(data335$route_no == input$routeInput & data335$schedule_no == input$scheduleInput), ]$trip_no),#selected = tail(y, 1)
)
}
)


}
shinyApp(ui = ui, server = server)

关于r - 根据之前在 R Shiny 中的选择显示下拉选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46966982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com