我有一个应用程序,其中用户可以输入某些字段的数值(使用numericInput()
)。或者,他们可以选择从参考表中选择值(通过checkboxInput()
字段)。
我能够在脚本中正确编码此行为。但我也希望如果选择checkboxInput
字段,numericInput()
中显示的值会更新,即默认值或先前写入的值将被覆盖。
在屏幕截图中,numericInput
字段以黄色突出显示。顶部字段的默认值为14,而其他字段为空。我想要的是"复制参考值?"选中checkboxInput
后,复制的值将显示在相应的字段中(对于&#34,流量为CoP,对于dP和#34,为k1 = 72.49;等等)
我的代码如下:
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)
)
答案 0 :(得分:2)
您需要使用observeEvent
和updateNumericInput
。由于您没有提供可重现的示例,因此这是一个模型:
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)
<强>之前强>
<强>后强>