我有一个应用程序,显示由团队和玩家组织的NBA统计数据框。当用户选择一个团队时,将显示该团队中最佳玩家的统计数据框。当用户选择播放器时,显示播放器统计数据的数据帧。
所有30支NBA球队都在selectInput中显示。选择团队后,另一个selectInput商品会显示该团队中某些玩家的列表。数据框有一个标签,显示一个玩家列表和一个仅显示单个玩家统计数据的标签。
我怎样才能做到这一点,一旦用户选择了一个播放器,该应用就会更新到播放器标签?我目前用observeEvent做的事情不起作用。我尝试使用带有输入$ var1的observe但我收到的“参数长度为零”错误。
请参阅此处的标签https://binlee.shinyapps.io/test_app/
# ui.R
shinyUI(fluidPage(
titlePanel("My App"),
sidebarLayout(
sidebarPanel(
uiOutput("teamInput")
, uiOutput("playerInput")),
mainPanel(
tabsetPanel(
tabPanel("Team", tableOutput("table")),
tabPanel("Player", tableOutput("table1"),
id = "panelTabs")
)))))
df <- read.csv("data.csv", header = TRUE, stringsAsFactors = FALSE)
# server.R
shinyServer(
function(input, output, session)
{output$teamInput <- renderUI({selectInput("var",
label = "Choose Team",
choices = c(unique(df$Team)),
selected = "unique(df$Team)")})
output$table <- renderTable({df[df$Team == input$var,4:14]})
output$playerInput <- renderUI({selectInput("var1",
label = "Choose Player",
choices = df[df$Team == input$var, 4])})
observeEvent(input$var1,
{updateTabsetPanel(session, inputId="panelTabs", selected="Player")})
output$table1 <- renderTable({df[df$Name == input$var1, 4:14]})
})
答案 0 :(得分:0)
请参阅以下应用代码以了解您的自定义UI流程。
在我的流程中,您最初必须从团队选项卡中选择团队,然后转到播放器选项卡以选择您的播放器,同样也将展示数据表。
shinyUI(fluidPage(
titlePanel("My App"),
sidebarLayout(
sidebarPanel(
conditionalPanel("input.tabSetPane == 'teamTAB'",
uiOutput("teamInput")
),
conditionalPanel("input.tabSetPane == 'playerTAB'",
uiOutput("playerInput")
)
),
mainPanel(
tabsetPanel(id = "tabSetPane",
tabPanel("Team", value = "teamTAB",
h1("Team - table")
#Call Team Table HERE
),
tabPanel("Player", value = "playerTAB",
h1("Player - table")
#Call Player Table HERE
)
)
)
)
))
shinyServer(function(input, output, session) {
output$teamInput <- renderUI({
selectInput("teamVar", label = "Choose Team",
choices = c("Team1", "Team2", "Team3"))
})
output$playerInput <- renderUI({
selectInput("playerVar", label = "Choose Player",
choices = c("Player-A", "Player-B", "Player-C"))
})
})
由于无法获得可重现的数据输入,因此仅提供通用流程 希望这会有所帮助。