问题描述
我想弄清楚如何将一个 Shiny 输入的值传递给另一个。我的目标是将滑块的值默认为与其上方下拉列表中的选择相对应的值。也就是说,我希望有一种方法可以将 selectinput()
(本质上是 input$Character
)的选择传递给 sliderinput()
中的 value 参数。我想尝试类似下面的代码,但它完全失败了。
library(shiny)
ui <- fluidPage(
sidebarPanel(
selectInput(inputId="Character",label="Choose Your Character",choices=starwars$name),sel = starwars %>% filter(name==input$name) %>% select(height),sliderInput(inputId="height",label="Choose character height ",min=0,max=max(starwars$height),value=sel)
),mainPanel(
verbatimtextoutput('text')
)
)
server <- fuction(input,output) {
output$text <- renderPrint({
print(input$height)
})
}
shinyApp(ui=ui,server=server)
谢谢!
解决方法
不要害怕使用服务器端处理,它非常简单!
library(shiny)
ui <- {
fluidPage(
selectInput("character","Choose your character",choices = starwars$name
),uiOutput("height_ui"),verbatimTextOutput('text')
)
}
server <- function(input,output,session) {
output$height_ui <- renderUI({
selected_character_height <- starwars %>%
filter(name == input$character) %>%
pull(height)
sliderInput("height","Choose character height ",min = 0L,max = max(starwars$height,na.rm = TRUE),value = selected_character_height
)
})
output$text <- renderPrint({
print(input$height)
})
}
shinyApp(ui,server)