【问题标题】:conditionalPanel when 2 files are uploaded上传 2 个文件时的条件面板
【发布时间】:2020-11-16 02:06:51
【问题描述】:

我试图仅在上传两个文件时才以闪亮的方式显示面板。

shinyApp(
  ui = fluidPage(
    fileInput('fileInput_pd', 'Add the file'),
    fileInput('fileInput_di', 'Add the file'),
    
    conditionalPanel(
      condition = "(input.fileInput_pd && input.fileInput_di) is true",
      selectInput("smoothMethod", "Method",
                  list("lm", "glm", "gam", "loess", "rlm"))
    ),
    
    downloadButton('report', 'Generate report')
  ),
  server = function(input, output) {
    
    observe({
      if(is.null(input$fileInput_pd) | is.null(input$fileInput_di)) {
        return()
      } else {
        var_example <- 2
      }
    }
    )
  }
)

使用上面的代码,它会在开始时生成条件面板。有什么建议吗?

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    您可以在输出上创建一个反应变量,以指示何时可以使用数据,而不是尝试直接读取输入。例如

    library(shiny)
    shinyApp(
      ui = fluidPage(
        fileInput('fileInput_pd', 'Add the file'),
        fileInput('fileInput_di', 'Add the file'),
        
        conditionalPanel(
          condition = "output.filesUploaded",
          selectInput("smoothMethod", "Method",
                      list("lm", "glm", "gam", "loess", "rlm"))
        ),
        
        downloadButton('report', 'Generate report')
      ),
      server = function(input, output) {
        
        observe({
          if(is.null(input$fileInput_pd) | is.null(input$fileInput_di)) {
            return()
          } else {
            var_example <- 2
          }
        }
        )
        output$filesUploaded <- reactive({
          val <- !(is.null(input$fileInput_pd) | is.null(input$fileInput_di))
          print(val)
        })
        outputOptions(output, 'filesUploaded', suspendWhenHidden=FALSE)
      }
    )
    

    这基本上只是从this answer改编而来的,并改为检查两个文件而不是一个,

    【讨论】:

      猜你喜欢
      • 2016-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-01
      • 2023-03-26
      • 2016-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多