【问题标题】:Implementing key-value pairs in Shiny selectInput在 Shiny selectInput 中实现键值对
【发布时间】:2019-07-09 09:52:18
【问题描述】:

我有想要在 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)

我收到错误: (功能(选择,名称)中的错误: “choices”中的所有子列表都必须命名。

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    您基本上需要创建命名列表并将其传递给下拉列表。它将返回playerID 而不是播放器fullname

    library(shiny)
    
    Players <- data.frame(fullname = c('John Doe', 'James Smith', 'John Smith'), playerID = c(1:3))
    # create named list and pass it to dropdown
    todrop <- Players$playerID
    names(todrop) <- Players$fullname
    
    ui <- fluidPage(
        selectInput("player","Select a player", todrop),
        uiOutput("out")
    )
    
    server <- function(input, output) {
    
        output$out <- renderUI({
            print(paste0("Players ID is: ", input$player)) # here you select player ID from dropdown (not fullnames) and can use input$player for your queries
        })
    }
    
    shinyApp(ui = ui, server = server)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-25
      • 2019-12-21
      • 2021-03-24
      • 2023-01-30
      • 2017-10-19
      • 2023-04-02
      • 2020-03-21
      相关资源
      最近更新 更多