【问题标题】:Shiny: reactive header based on file inputShiny:基于文件输入的响应式标头
【发布时间】:2015-09-23 19:22:24
【问题描述】:

我想让我的 Shiny 程序的标题通过使用上传的文件名更新自身来响应文件输入。这是我所拥有的:

ui.R:

shinyUI(pageWithSidebar(
    headerPanel("File"),
    sidebarPanel( 
       fileInput("file1", "Upload a file:", 
                  accept = c('.csv','text/csv','text/comma-separated-values,text/plain'),
                  multiple = F) ) ))

服务器.R:

shinyServer(function(input, output, session) {
    in_data <- reactive({
       inFile <- input$file1
       if (is.null(inFile)) return(NULL)   
       read.csv(inFile$datapath, as.is=T)
    }) })

基本上,我想更新 headerPanel,以便在用户上传文件后显示“文件 [名称]”。我无法在 server.R 中访问 ui.R 。我尝试在 server.R 中调用 in_data() 并找不到它。有什么想法吗?

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    诀窍是在你有headerPanel 的地方使用uiOutput,例如,

    ui <- pageWithSidebar(
        uiOutput("header_panel"),
        sidebarPanel( 
            fileInput("file1", "Upload a file:", 
                      accept = c('.csv','text/csv','text/comma-separated-values,text/plain'),
                      multiple = F
            ) 
        ),
        mainPanel()
    )
    
    server <- function(input, output, session) {
    
        in_data <- reactive({
           inFile <- input$file1
           if (is.null(inFile)) return(NULL)   
           read.csv(inFile$datapath, as.is=T)
        }) 
    
        output$header_panel <- renderUI({
           inFile <- input$file1
           if (is.null(inFile)) headerPanel('File')
           else headerPanel(paste('File', inFile$name))
        })
    }
    
    shinyApp(ui=ui, server=server)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-28
      • 2018-09-07
      • 1970-01-01
      • 2020-08-15
      • 2014-06-16
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多