我正在创建一个Shiny应用程序,我希望默认的numericInput
依赖于先前定义的numericInput
的另一个默认值。
例如,
在这里,我希望(2)的numericInput
元素是(1)的倒数,而不必指定value
,min
,max
的值,事先step
:
(1) numericInput("obs1", "Label1", value = 10, min = 10, max = 20, step = 1)
(2) numericInput("obs2", "Label2", value = 1/10, min = 1/10, max = 1/20, step = 1)
以上(1)是先前定义的numericInput
。
有一种简单的方法吗?
答案 0 :(得分:1)
如果您希望input
对象拥有动态参数,则需要使用uiOutput
,以便您可以在运行时中生成它们(在server.R
)。
示例:在第一列中,您可以设置min
,max
和value
。修改其中任何一个都会使用新参数值呈现obs1
和obs2
。
library(shiny)
ui <- fluidPage(
column(6,
tags$h2("Set parameters"),
numericInput("value", "Value", value = 20, min = 10, max = 60, step = 10),
numericInput("min", "Min", value = 10, min = 0, max = 30, step = 10),
numericInput("max", "Max", value = 40, min = 40, max = 60, step = 10)
),
column(6,
uiOutput("ui")
)
)
server <- function(input, output, session) {
output$ui <- renderUI( {
tagList(
tags$h2("Numeric inputs that depend on reactive data"),
numericInput("obs1", "Label1", value = input$value, min = input$min, max = input$max, step = 1),
numericInput("obs2", "Label2", value = input$value + 5, min = input$min - 5, max = input$max + 5, step = 1)
)
})
}
shinyApp(ui, server)
请注意,如果要将多个输入元素传递给tagList
,则需要在renderUI
中包含元素。