【问题标题】:Conditional Panel in Shiny doesn't update variablesShiny中的条件面板不更新变量
【发布时间】:2016-09-23 00:07:56
【问题描述】:

我正在尝试在 R Shiny 中使用条件面板,但遇到了未分配值的问题。这是我的代码的 sn-p:

   conditionalPanel(condition="input['input.type']=='Use Example Data'",
     textInput("Label", "Enter the label:", "A"),
     ),
   conditionalPanel(condition="input['input.type']=='Upload Data'",
     textInput("Label", "Enter the label:", "B"),
     )

现在,使用这段代码,我期望发生的是,如果用户选择“使用示例数据”,那么默认值将是 A(它是),但如果用户切换到“上传数据”,那么默认值仍然是 A 而不是 B 如我所料。似乎只有第一个条件面板存储值,因为它们具有相同的名称?

第二个问题,当用户在“使用示例数据”和“上传数据”之间切换时,条件面板确实会发生变化,但如果我用 C 替换 A 的值,然后来回切换,则值的 C 将始终存在,而不是被重置为 A。有没有简单的解决方法?

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    这是你想要的吗?

    rm(list = ls())
    library(shiny)
    library(shinydashboard)
    
    ui <- dashboardPage(
      dashboardHeader(),
      dashboardSidebar(
        selectInput("type", "Type:",c("Use Example Data","Upload Data"))),
      dashboardBody(
        uiOutput("myui")    
      )
    )
    server <- function(input, output) {
      output$myui <- renderUI({
        if(input$type == "Upload Data"){
          textInput("Label", "Enter the label:", "B")
        }
        else{
          textInput("Label", "Enter the label:", "A")
        }
      }) 
    }
    shinyApp(ui, server)
    

    【讨论】:

    • 不,不是。到目前为止,你的代码和我的一样。但是现在,在您闪亮的应用程序上将其更改为上传数据,将 B 替换为 C,然后在上传数据和使用示例数据之间来回切换,您将看到 1)标签的默认值没有t 在 B 和 2) 处自行重置,无论您做什么,标签的值将始终是您在上传示例数据时输入的任何内容
    • 好的,我知道了,它必须是conditionalPanel 吗? renderui 更加灵活
    • 不,它不一定是条件面板。条件面板正是我在谷歌上搜索解决方案时出现的,所以我对任何事情都持开放态度。
    • 谢谢!正是我需要的。
    • 最后一个问题,如果我希望它在 if 语句中有多个文本输入怎么办。例如,如何在 if 语句中添加 textInput("Label", "Enter the label:", "B")textInput("Age", "Enter the age:", "76")
    猜你喜欢
    • 2016-08-14
    • 2018-11-29
    • 2015-07-07
    • 2016-06-04
    • 2016-04-12
    • 1970-01-01
    • 2020-06-03
    • 2014-11-18
    • 1970-01-01
    相关资源
    最近更新 更多