更新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”)
数据