使用 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)
})
}
我打算创建一个应用程序,其中包含一个输入框,您可以在其中选择 "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)
})
}