Использование вывода inputBox в качестве входа для inputSlider в R Shiny - PullRequest
0 голосов
/ 17 января 2019

Я планирую создать приложение, включая поле ввода, где вы можете выбрать «сценарий». В зависимости от выбранного сценария, inputSlider под Box должен изменить свое начальное значение, но все еще должна быть возможность изменить это значение и выполнить дальнейшие вычисления с ним. Я попытался напечатать начальное значение, чтобы сравнить его с ползунком, но даже при изменении начального значения ползунок не изменился. Это имеет смысл, потому что inputSlider не реагирует, в то время как печать начального значения выше ... Теперь я не знаю, как я могу внести «реактивность» в слайдер. Есть предложения?

Вот что я уже пробовал:

 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 голосов
/ 17 января 2019

Во-первых, в пользовательском интерфейсе измените value для параметра sliderInput, "" 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)
 })
}
...