Использование checkboxGroupInput как минимум для числового ввода, Shiny R - PullRequest
0 голосов
/ 09 октября 2018

В моем приложении Shiny есть вторая страница tabPanel, на которой пользователь вводит некоторые значения, например, value1, value2, value3.Затем у меня есть еще одна страница tabPanel Первая, она состоит из checkboxGroupInput, в котором пользователь выбирает, какие значения следует использовать для расчета минимума вставленных значений на второй странице tabPanel.Возможно ли, чтобы этот минимум значений использовался в качестве начального значения другого NumericInput на вкладке Вторая страница?

Здесь у меня есть пример для трех вариантов, но на самом деле у меня есть 6, поэтому разделение вариантов с if & ifelse (как здесь: R Блестящий: значение checkboxGroupInput ) было бы очень длинным путем,Есть ли более плавный путь?

Спасибо за ваши ответы.

Например

ui<- navbarPage(title=div("Problem"),
  tabPanel (title="First page",
            fluidRow(column(2,numericInput("value", "Insert a value", value = **min(of selected values)**, min = 0, max=5, step=0.0001),
            checkboxGroupInput("variable", "Inital values expressed as min of:",
                               choices=c("House",
                                         "Apartment",
                                         "Car" 
                               ))))),

            tabPanel (title="Second page", fluidRow(column(2,
                      numericInput("value1", "House", value =0.02, min = 0, max=5, step=0.0001),
                      numericInput("value2", "Apartment", value =1, min = 0, max=5, step=0.0001),
                      numericInput("value3", "Car", value =0.15,min = 0, max=5, step=0.0001)))))
server <- function(input, output) { }

shinyApp(ui, server)    

1 Ответ

0 голосов
/ 30 октября 2018

Вы можете использовать эту функциональность в следующем примере app.R

library(shiny)
ui<- fluidPage(title=div("Problem"),
               tabsetPanel(
                 tabPanel(title = "First page", 
                   uiOutput("reactiveInput"),
                   checkboxGroupInput("variable", "Inital values expressed as min of:",
                                    choices=c("House"=1, "Apartment"=2, "Car"=3))), 
                 tabPanel (title = "Second page",
                           numericInput("value1", "House", value =0.02, min = 0, max=5, step=0.0001),
                           numericInput("value2", "Apartment", value =1, min = 0, max=5, step=0.0001),
                           numericInput("value3", "Car", value =0.15,min = 0, max=5, step=0.0001))
                ))

server <- function(input, output) {

  insertedValue <- reactive({
    variables <- c(input$value1, input$value2, input$value3)
    value <- min(variables[as.numeric(input$variable)])
  })

  output$reactiveInput <- renderUI ({
    insertedValue <- insertedValue()
    numericInput("value", "Insert a value", value = insertedValue, min = 0, max=5, step=0.0001)
  })

}

shinyApp(ui, server)    

Если вы хотите, чтобы элемент ввода реагировал на предыдущий пользовательский ввод, его обычно нужно визуализировать с помощью renderUI и uiOutput.Необходимое значение извлекается в реактивном блоке и далее направляется на элемент ввода внутри renderUI.

. Вы можете пропустить бесконечное чувство, если ... еще, используя результат checkboxGroupInput в качестве числаиндекс для вектора numericInput, просто убедитесь, что вы используете тот же порядок в векторе и checkboxGroupInput.

...