如何为闪亮的两个相关输入值(滑块和数字)设置初始值?

时间:2019-02-11 15:36:17

标签: r shiny slider numeric shiny-reactivity

我已经成功地在我的闪亮应用程序中定义了两个相互关联或相互依赖的输入。现在,我的问题是为这些滑块和数字输入设置一个特定的初始值。似乎它们总是从最小值开始,甚至我现在也不知道为什么。如何为这些输入参数指示唯一的起点或初始值?

我已附加了我应用程序的简化部分,以便在此处为您提供可重现的我的问题版本:

ui.R

library(shiny)

shinyUI(fluidPage(

  uiOutput("Param_s"),
  uiOutput("Param_n")

))

和“ server.R

library(shiny)

shinyServer(
function(input,output) {

# Mutually dependent  slider and numeric inputs 
output$Param_s = renderUI({
  sliderInput(inputId = "param_slide",
            label= "My input parameter",
            value= input$param_numeric,
            min=1,
            max=200)
 })

output$Param_n = renderUI({
  numericInput(inputId = "param_numeric",
             label= "My input parameter",
             value= input$param_slide,
             min=1,
             max=200)
})


})

我尝试了各种方法来固定初始值,但最终无济于事。任何帮助,将不胜感激!!

1 个答案:

答案 0 :(得分:1)

哇!我知道了!您只应同时更新两个输入对象,并最多更新相同的值。这意味着将这两行相加可以解决我的问题,例如将初始值设置为60:

updateSliderInput(session,"param_slide", value = 60)
updateNumericInput(session,"param_numeric", value = 60 )

因此,整个“ server.R ”将如下所示:

#
library(shiny)

shinyServer(
function(input,output,session) {

# Mutually dependent  slider and numeric inputs 
output$Param_s = renderUI({
sliderInput(inputId = "param_slide",
            label= "My input parameter",
            value= input$param_numeric,
            min=1,
            max=200)
})

output$Param_n = renderUI({
numericInput(inputId = "param_numeric",
             label= "My input parameter",
             value= input$param_slide,
             min=1,
             max=200)
})

updateSliderInput(session,"param_slide", value = 60)
updateNumericInput(session,"param_numeric", value = 60 )

})

您应该只知道使用

添加这些更新。
  

observeEvent()

在其他选项卡上具有这些输入对象时。在我使用“ sidebarMenu”的情况下,我使用了以下简单的代码行:

observeEvent(input$sidebar_id =="tab1",{
  updateSliderInput(session,"param_slide", value = 60)
  updateNumericInput(session,"param_numeric", value = 60 )
})