【问题标题】:update values in numericInput R shiny更新 numericInput R 中的值
【发布时间】:2018-02-19 22:31:14
【问题描述】:

我有一个应用程序,用户可以在其中输入某些字段的数值(使用numericInput())。或者,他们可以选择从参考表中选择值(通过checkboxInput() 字段)。

我能够在脚本中正确地编写此行为。但我还希望,如果选择了 checkboxInput 字段,则 numericInput() 中显示的值会得到更新,即默认值或以前写入的值将被覆盖。

在屏幕截图中,numericInput 字段以黄色突出显示。顶部字段的默认值为 14,而其他字段为空。我想要如果“复制参考值?” checkboxInput 被选中,复制的值显示在相应的字段中(k1 = 72.49 表示“流量系数。dP”等)

我的代码如下:

fluidRow(
    column(4,
           numericInput(inputId = "Area", 
                        label = tags$div(HTML(paste("rea (m", tags$sup(2), ")", sep = ""))),
                        min = 1, max = 100, step = 0.1, value = 14),
           numericInput(inputId = "k1", label = "Flow coef. for dP", min = 1.0, max = 600.0, value = ""),
           numericInput(inputId = "k2", label = "Flow exponent for dP" , min = 1.0, max = 20.0, value = "")
           checkboxInput("copyVals", "Copy Reference Values?", value = FALSE)
)

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    您需要使用observeEventupdateNumericInputs。由于您没有提供可重现的示例,因此这里是一个模型:

    library("shiny")
    library("DT")
    
    data <- data.frame(area = 18.61, k1 = 74.29, k2 = 1.44)
    
    server <- function(input, output, session) {
      # assuming your data is reactive, not static
      data_reac <- reactive({
        data
      })
    
      output$parm_tab <- renderDataTable({
        datatable(data_reac())
      })
    
      # set the values if checked
      observeEvent(input$copyVals == TRUE, {
        c_data <- data_reac()
    
        updateNumericInput(session, "area", value = c_data$area)
        updateNumericInput(session, "k1", value = c_data$k1)
        updateNumericInput(session, "k2", value = c_data$k2)
      }, ignoreInit = TRUE)
    
    }
    
    ui <- fluidPage(
      sidebarLayout(
      sidebarPanel(
          numericInput(inputId = "area", label = "Area", min = 1, max = 100, step = 0.1, value = 14),
          numericInput(inputId = "k1", label = "Flow coef. for dP", min = 1.0, max = 600.0, value = ""),
          numericInput(inputId = "k2", label = "Flow exponent for dP" , min = 1.0, max = 20.0, value = ""),
          checkboxInput("copyVals", "Copy Reference Values?", value = FALSE)
      )
      , mainPanel(
          dataTableOutput("parm_tab")
        )
      )
    )
    
    shinyApp(ui = ui, server = server)
    

    之前

    之后

    【讨论】:

      猜你喜欢
      • 2021-05-17
      • 2019-12-10
      • 2018-06-18
      • 2020-12-04
      • 2019-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-14
      相关资源
      最近更新 更多