我正在创建一个Shiny应用程序,它有一个下拉列表,需要根据单击的单选按钮进行更新。我会根据单选按钮更新列表,但仍保留上一个选项中的最后一个选项。我包含了使代码更清晰的代码
ui.R
fluidRow(
column(3,
radioButtons("matchType", label = h3("Match type"),
choices = list("Test" = "Test",
"ODI" = "ODI",
"Twenty20" = "TT"),
inline=TRUE,
selected = "Test"),
selectizeInput(
"batsman", label = "Players", choices = NULL, multiple=FALSE,selected="tendulkar",
options = list(create = TRUE,placeholder = 'Choose the player',size=12)
),
selectizeInput(
"batsmanFunc", label = "Choose chart type", choices = NULL, multiple=FALSE,selected="4s of batsman",
options = list(create = TRUE,placeholder = 'Choose the chart')
)
),
我已经设置了server.R,如下所示
server.R
output$batsmanPlot <- renderPlot({
# Include the list to display in the drop downs on choice of matchType
if(input$matchType == "Test"){
updateSelectizeInput(session, 'batsman', choices = testBatsman, server = TRUE,selected=input$batsman)
updateSelectizeInput(session, 'batsmanFunc', choices = funcs, server = TRUE,selected=input$batsmanFunc)
} else {
updateSelectizeInput(session, 'batsman', choices = odiBatsman, server = TRUE,selected=input$batsman)
updateSelectizeInput(session, 'batsmanFunc', choices = funcsODITT, server = TRUE,selected=input$batsmanFunc)
}
print(input$batsman)
analyzeBatsman(input$batsman,input$batsmanFunc,input$matchType)
})
有两个问题 1)因为我使用selected = input $ batsman,所以下拉列表最初是空白的。如果我为此选择了固定值,则每次选择另一个值时,它将显示新值,然后返回到所选值。我认为这是因为updateSelectize在renderPlot
中2)当我在单选按钮和#34;测试&#34; /&#34; ODI&#34;之间切换时,最后选择的播放器不会被清除。新列表将附加到最后选择的播放器。下一次,它是实际的列表。
如何解决这个问题?