使用 inputBox 的输出作为 R Shiny 中 inputSlider 的输入

Using the output of an inputBox as an input for an inputSlider in R Shiny

我打算创建一个应用程序,其中包含一个输入框,您可以在其中选择 "scenario"。根据选择的场景,Box 下方的 inputSlider 应更改其初始值,但仍应可以更改此值并使用它进行进一步计算。 我尝试打印初始值以将其与滑块进行比较,但即使初始值发生变化,滑块也不会改变。这是有道理的,因为 inputSlider 不是反应性的,而上面的初始值的打印是......现在我不知道如何将 "reactivity" 带入 Slider。有什么建议吗?

这是我已经尝试过的:

 library(shiny)
library(DT)

dropinput <- 1

ui <- fluidPage(

inputPanel(
#InputBox
selectInput(inputId = "szenarios", label="Szenarios:", 
            choices=c("calculated"="calculated","shiny"="shiny"))), 

textOutput("dropinput"),  #Print of the Inital value of the sliderInput calculated from the Output of the Box

sliderInput("EU_slider_DF", label = "EU_slider", min = 0, 
                          max = 3,step=0.001, value =dropinput))


server<-function(input,output){
  output$dropdown<-renderPrint({input$szenarios})
  output$dropinput<- reactive({if (input$szenarios=="shiny") dropinput<- 2     else if (input$szenarios=="calculated") dropinput<- 3 })}



#Load the App
shinyApp( ui = ui, server = server)

首先,在ui中,将sliderInput的value,""EU_slider_DF"改为value=1

然后更改您的服务器以遵循此

#Add session argument so we can push updates
server<-function(input,output,session){

#Output to our text output, render is reactive so directly use input$_
output$dropinput<-renderPrint({input$szenarios})

#Observe event used to monitor changes anytime the selectinput is changed
observeEvent(input$szenarios,{
if (input$szenarios=="shiny"){ (dropinput<- 2)
}else if (input$szenarios=="calculated") { (dropinput<- 3)
}else{ (dropinput<-1) }

#updates slider based on what is selected
updateSliderInput(session,"EU_slider_DF",value=dropinput, min = 0, 
                          max = 3,step=0.001)
 })
}