将checkboxGroupInput用作数字输入Shiny R的最小值

时间:2018-10-09 09:22:43

标签: r checkbox shiny numeric-input

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

这里有一个关于三个选择的示例,但实际上我有六个选择,因此将选择与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)    

1 个答案:

答案 0 :(得分:0)

您可以通过以下示例应用程序来使用此功能。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向量的数字索引,只需确保在向量和{{ 1}}。