У меня есть данные пары ключ-значение, которые я хочу использовать в выпадающем списке Shiny selectInput
.
Я хочу, чтобы пользователь выбирал из списка имен игроков, но затем я хочу использовать соответствующий playerID
для фильтрации других наборов данных.
Есть ли способ сделать это?Мой текущий код выглядит так:
selectInput("player","Select a player", Players$fullName),
Я хочу, чтобы выпадающий список игроков был реактивным в зависимости от выпадающего списка команд.Мой полный код:
library(shiny)
library(dplyr)
setwd("C:/Users/Michael/Documents/Baseball/Retrosheet/Shiny")
Teams <- read.csv("TeamID.csv") # List of team names
Players <- read.csv("TeamBatter.csv") # TeamName, fullName, retroID
PlayerData <- read.csv("playerExpectedRBI.csv") # Data keyed on PlayerID
todrop <- Players$retroID
names(todrop) <- Players$fullName
ui <- fluidPage(
selectInput("team","Select a team:",Teams$teamID),
selectInput("player", "Select a player", todrop),
tableOutput("playerSummary")
)
server <- function(input,output,session){
observe({
PlayerList <- reactive({Players %>% filter(teamID == input$team) %>% select(fullName,retroID)})
updateSelectInput(session,"player", choices=PlayerList()$fullName)
SelectedPlayerSum <- reactive({PlayerData %>% filter(resbatter == input$player)})
output$playerSummary <- renderTable({SelectedPlayerSum()})
})
}
shinyApp(ui = ui, server = server)
Я получаю сообщение об ошибке: Ошибка в (функция (выбор, имя): все подсписки в «вариантах» должны быть названы.