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

时间:2019-01-17 17:07:15

标签: r shiny shiny-reactivity

我计划创建一个包含输入框的应用程序,您可以在其中选择一个“方案”。根据选择的方案,“框”下方的inputSlider应该更改其初始值,但仍然可以更改此值并进行进一步的计算。 我尝试打印初始值以将其与滑块进行比较,但是即使更改了初始值,滑块也不会改变。但这是有道理的,因为inputSlider不具有反应性,而上面的初始值的打印方式是……现在,我不知道如何将“反应性”带入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)

1 个答案:

答案 0 :(得分:0)

首先,在ui中,将slideInput的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)
 })
}