使用 checkboxGroupInput 作为数字输入的最小值,Shiny R
Using checkboxGroupInput as minimum for numeric Input, Shiny R
在我的 Shiny 应用程序中,我有一个 tabPanel 第二页,用户可以在其中输入一些值,例如 value1、value2、value3。
然后我有另一个 tabPanel 第一页,它由 checkboxGroupInput 组成,用户可以在其中选择哪些值应该用于计算 tabPanel 第二页中插入值的最小值。是否有可能将此最小值用作 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)
您可以通过以下示例获得此功能 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
向量的数字索引来跳过 if...else 的无穷无尽的感觉,只需确保在向量中使用相同的顺序并且checkboxGroupInput
.
在我的 Shiny 应用程序中,我有一个 tabPanel 第二页,用户可以在其中输入一些值,例如 value1、value2、value3。 然后我有另一个 tabPanel 第一页,它由 checkboxGroupInput 组成,用户可以在其中选择哪些值应该用于计算 tabPanel 第二页中插入值的最小值。是否有可能将此最小值用作 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)
您可以通过以下示例获得此功能 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
向量的数字索引来跳过 if...else 的无穷无尽的感觉,只需确保在向量中使用相同的顺序并且checkboxGroupInput
.