Блестящая панель управления R: использование заголовочного файла Excel в качестве поля ввода SelectInput - PullRequest
0 голосов
/ 07 мая 2020

В настоящее время я работаю над, я полагаю, очень простой панелью управления Shiny, но поскольку я новичок в ней, я все еще не могу заставить ее работать. Я хотел бы создать панель управления, на которой пользователь может выбрать файл. После выбора файла имена заголовков этого файла должны использоваться в качестве входных данных для поля SelectInput.

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      fileInput('datafile', 'Choose xlsx file',
                accept = c(".xlsx")
      ),
      selectInput("vars", "Select a variable:", choices=names("varselect"),
                  multiple = TRUE)    
    ),
    mainPanel(


    )
  )
)

server <- function(input, output,session) {

  Dataset <- reactive({
    infile <- input$datafile
    if (is.null(infile)) {
      return(data.frame())
    }
    read.xlsx(infile$datapath, 
              sheetIndex = 1) 

  })

  output$varselect <- renderUI({

  })
  observe({
    if (identical(Dataset(), '') || identical(Dataset(), data.frame()))


      updateSelectInput(session, inputId="vars", label="Variables to use:",
                        choices=names(Dataset()), selected=names(Dataset()))
  })
  }



shinyApp(ui = ui, server = server)

Может ли кто-нибудь помочь мне объяснить, что я делаю неправильно / как я могу наиболее эффективно решить эту проблему?

Заранее спасибо!

1 Ответ

0 голосов
/ 08 мая 2020

Вы полностью правы, после удаления он работает. Спасибо!

ui <- fluidPage(   sidebarLayout(
    sidebarPanel(
      fileInput('datafile', 'Choose xlsx file',
                accept = c(".xlsx")
      ),
      selectInput("vars", "Select a variable:", choices=names("varselect"),
                  multiple = TRUE)    
    ),
    mainPanel(


    )   ) )

server <- function(input, output,session) {
     Dataset <- reactive({
    infile <- input$datafile
    if (is.null(infile)) {
      return(data.frame())
    }
    read.xlsx(infile$datapath, 
              sheetIndex = 1) 
       })
     output$varselect <- renderUI({
       })   observe({



    updateSelectInput(session, inputId="vars", label="Variables to use:",
                        choices=names(Dataset()), selected=names(Dataset()))   }) }



shinyApp(ui = ui, server = server)
...