【问题标题】:Using checkboxGroupInput as minimum for numeric Input, Shiny R使用 checkboxGroupInput 作为数字输入的最小值,Shiny R
【发布时间】:2019-03-14 00:37:27
【问题描述】:

在我的 Shiny 应用程序中,我有一个 tabPanel 第二页,用户在其中输入一些值,例如 value1、value2、value3。 然后我有另一个 tabPanel 第一页,它由 checkboxGroupInput 组成,用户在其中选择应该使用哪些值来计算 tabPanel 第二页中插入值的最小值。是否有可能将此最小值用作选项卡面板第二页中另一个 NumericInput 的初始值?

这里我有一个三个选项的示例,但实际上我有 6 个,所以用 if 和 ifelse 分隔选项(比如这里:R shiny : checkboxGroupInput value)将是一个很长的路要走。有没有更流畅的方法?

感谢您的回答。

例如

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)    

【问题讨论】:

    标签: r checkbox shiny numeric-input


    【解决方案1】:

    您可以通过以下示例 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)    
    

    如果您希望输入元素对先前的用户输入做出反应,通常必须使用renderUIuiOutput 来呈现它。所需的值在反应块中提取,并进一步定向到renderUI 内的输入元素。

    您可以通过使用checkboxGroupInput 结果作为numericInput 向量的数字索引来跳过无穷无尽的if...else,只需确保在向量中使用相同的顺序和checkboxGroupInput

    【讨论】:

      猜你喜欢
      • 2018-12-06
      • 2020-08-14
      • 2015-06-30
      • 2018-10-16
      • 2017-02-08
      • 2019-06-29
      • 1970-01-01
      • 1970-01-01
      • 2017-05-03
      相关资源
      最近更新 更多