Как установить начальное значение для двух зависимых входных значений (ползунок и числовой) в блестящей? - PullRequest
0 голосов
/ 11 февраля 2019

Мне удалось определить два взаимосвязанных или взаимозависимых ввода в моем блестящем приложении.Прямо сейчас моя проблема состоит в том, чтобы установить определенное начальное значение для этих ползунков и числовых входов.Кажется, они всегда начинаются с минимального значения, даже я не знаю, почему.Как я могу указать уникальную начальную точку или начальное значение для этих входных параметров?

Я приложил упрощенную часть своего приложения, чтобы предоставить вам воспроизводимую версию моей проблемы здесь:

" 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 голосов
/ 11 февраля 2019

вау!Я понял, ребята!Вы должны обновлять только два входных объекта одновременно и до одинакового значения.Это означает, что добавление этих двух строк решило мою проблему, установив начальное значение равным 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 )

})

Вы должны быть осведомлены о добавлении этих обновлений только с

наблюдатьEvent ()

, когда эти входные объекты находятся на других вкладках.В моем случае, который я использую "sidebarMenu", я использовал простую строку кода, как это:

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