更新NumericiInput R中的值

更新NumericiInput R中的值,r,shiny,R,Shiny,我有一个应用程序,用户可以在其中输入特定字段的数值(使用numericInput())。或者,他们可以选择从参考表中选择值(通过checkboxInput()字段) 我能够在脚本中正确地编写这种行为。但我还希望,如果选择了checkboxInput字段,则numeriInput()中显示的值将得到更新,即覆盖默认值或以前写入的值 在屏幕截图中,数值输入字段以黄色突出显示。顶部字段的默认值为14,而其他字段为空。如果选择了“复制参考值?”checkboxInput,则复制的值将显示在相应的字段中

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

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

在屏幕截图中,
数值输入
字段以黄色突出显示。顶部字段的默认值为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)
)

您需要使用
observeEvent
updateNumericInput
s。因为您没有提供可复制的示例,所以这里是一个模型:

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)
库(“闪亮”)
图书馆(“DT”)

数据您需要使用
observeEvent
updateNumericInput
s。因为您没有提供可复制的示例,所以这里是一个模型:

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)
库(“闪亮”)
图书馆(“DT”)
数据