我正在制作一些我闪亮的东西,我想知道是否有可能让radiobuttons决定另一个输入。
复制我的问题的玩具示例由:
if (interactive()) {
ui <- fluidPage(
radioButtons("dist", "Distribution type:",
c("Normal" = "norm",
"Uniform" = "unif")),
textInput(inputId = "textid", label = "Text input-header", value = "rnorm"),
plotOutput("distPlot")
)
server <- function(input, output) {
df <- reactive({
switch(input$textid,
rnorm = {rnorm(500)},
uni = {runif(500)},
exp = {rexp(500)},
)})
output$distPlot <- renderPlot(hist(df())
)
}
shinyApp(ui, server)
}
就像现在一样,文本框中的输入决定了用于生成数据的分布类型。我想要的是,当单击其中一个单选按钮,然后在文本框中更新文本(例如,如果&#34; Uniform&#34;被检查,那么textunput将更新为&#34; uni& #34; - 从而使用此分布)。问题是我需要这个盒子,因为我希望能够在单选按钮中选择一些不是选项的东西(所以它对我来说只是添加额外的单选按钮不起作用)。在这种情况下,额外的选项是,可以写&#34; exp&#34;在文本输入中(无法从单选按钮中选择此分布)。
在这个例子中看起来有点愚蠢,但在我的情况下,我有2个经常使用的时间戳,但应用程序必须允许用户选择每个可能的日期。
这有可能吗?
提前致谢!
答案 0 :(得分:0)
这样的东西?请注意,我添加了req
,您的文字输入需要"rnorm","uni","exp"
library(shiny)
if (interactive()) {
ui <- fluidPage(
radioButtons("dist", "Distribution type:",c("Normal" = "rnorm","Uniform" = "uni","Exponential" = "exp")),
textInput(inputId = "textid", label = "Text input-header", value = "rnorm"),
plotOutput("distPlot")
)
server <- function(input, output,session) {
observeEvent(input$dist,{
updateTextInput(session, "textid",label = "Text input-header",value = input$dist)
})
df <- eventReactive(input$textid,{
req(input$textid %in%c("rnorm","uni","exp"))
switch(input$textid, rnorm = {rnorm(500)},uni = {runif(500)}, exp = {rexp(500)},
)})
output$distPlot <- renderPlot(hist(df()))
}
shinyApp(ui, server)
}