Shiny: updateSelectInput пусто после загрузки данных - PullRequest
1 голос
/ 25 января 2020

У меня есть приложение Shiny, в которое пользователи загружают файл .txt и которое затем пользователи могут использовать для создания графика. Сюжет обусловлен тем, что пользователи выбирают входные данные на основе имен столбцов своих загруженных данных. Эти входные данные представляют собой выпадающие списки, в которых имена столбцов указаны после загрузки данных.

Приложение работает с 23.01.2020. Но сегодня (25/01/2020), без каких-либо обновлений кода, раскрывающиеся входы больше не отображают имена столбцов загруженных фреймов данных. При запуске приложения не выдается сообщение об отсутствии имен столбцов в раскрывающемся списке. Помимо этой проблемы, приложение работает отлично (хотя, очевидно, сюжет не может быть создан).

Я удалил из приложения следующий код, чтобы привести пример загрузки фрейма данных и использования раскрывающихся списков. Код точно такой, как он отображается в приложении и работает в этом примере. Чтобы получить ту же проблему (отсутствующие имена столбцов в выпадающих списках), вам необходимо клонировать приложение из GitHub , поскольку я не нашел способа воспроизвести отсутствующие имена столбцов.

Любая помощь приветствуется!

# example data to upload to the app
data <- data.frame(this = 1:10, is = 1:10, some = 1:10, great = 1:10, example = 1:10, data = 1:10)
write.table(data, "data_frame.txt", 
            row.names = FALSE, col.names = TRUE, quote = FALSE, sep = "\t")
library(shiny)
library(data.table)


ui <- fluidPage(

  sidebarPanel(
    helpText("Select paramaters for data upload then upload data. Functions based on R read.table()."),

    checkboxInput(
      inputId = 'header',
      label = 'Header',
      value = TRUE
    ),

    checkboxInput(inputId = "stringAsFactors", "stringAsFactors", FALSE),

    radioButtons(
      inputId = 'sep',
      label = 'Separator',
      choices = c(
        Comma = ',',
        Semicolon = ';',
        Tab = '\t',
        Space = ''
      ),
      selected = '\t'
    ),

    radioButtons(
      inputId = "quote",
      label = "Quote",
      choices = c(
        None = "",
        "Double Quote" = '"',
        "Single Quote" = "'"
      ),
      selected = '"'
    ),

    fileInput(
      inputId = "file1",
      label = "Track 1",
      multiple = TRUE,
      accept = c(
        "text/csv",
        "text/comma-separated-values",
        "text/plain",
        ".csv"
      )
    ),

    selectInput("label_column",
                "Label:",
                choices="", 
                selected = "")
))


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

# Read data from .csv/.txt files
track2_data1 <- eventReactive(input$file1, {
  rbindlist(
    lapply(
      input$file1$datapath,
      FUN = read.csv,
      header = input$header,
      sep = input$sep,
      quote = input$quote
    ),
    use.names = TRUE,
    fill = TRUE
  )
})

# drop down menu 
observeEvent(input$file1, {
  updateSelectInput(session,
                    "label_column",
                    choices = c("",colnames(track2_data1())))})
})

shinyApp(ui = ui, server = server)

sessInfo():

Перед запуском shiny::runApp():

> sessionInfo()
R version 3.6.2 (2019-12-12)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Mojave 10.14.6

Matrix products: default
BLAS:   /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRlapack.dylib

locale:
  [1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8

attached base packages:
  [1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
  [1] compiler_3.6.2 tools_3.6.2    packrat_0.5.0 

После запуска shiny::runApp():

> sessionInfo()
R version 3.6.2 (2019-12-12)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Mojave 10.14.6

Matrix products: default
BLAS:   /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRlapack.dylib

locale:
  [1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8

attached base packages:
  [1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
  [1] markdown_1.1         rmarkdown_2.1        fs_1.3.1             stringr_1.4.0       
[5] shinycssloaders_0.3  dplyr_0.8.3          circlize_0.4.8       data.table_1.12.8   
[9] plotly_4.9.1         ggplot2_3.2.1        shinythemes_1.1.2    shinyLP_1.1.2       
[13] shinydashboard_0.7.1 shiny_1.4.0         

loaded via a namespace (and not attached):
  [1] shape_1.4.4         tidyselect_0.2.5    xfun_0.12           purrr_0.3.3         colorspace_1.4-1   
[6] vctrs_0.2.2         htmltools_0.4.0     viridisLite_0.3.0   yaml_2.2.0          rlang_0.4.3        
[11] later_1.0.0         pillar_1.4.3        glue_1.3.1          withr_2.1.2         lifecycle_0.1.0    
[16] munsell_0.5.0       gtable_0.3.0        htmlwidgets_1.5.1   GlobalOptions_0.1.1 evaluate_0.14      
[21] knitr_1.27          fastmap_1.0.1       crosstalk_1.0.0     httpuv_1.5.2        Rcpp_1.0.3         
[26] xtable_1.8-4        promises_1.1.0      scales_1.1.0        jsonlite_1.6        mime_0.8           
[31] packrat_0.5.0       digest_0.6.23       stringi_1.4.5       grid_3.6.2          tools_3.6.2        
[36] magrittr_1.5        lazyeval_0.2.2      tibble_2.1.3        crayon_1.3.4        tidyr_1.0.2        
[41] pkgconfig_2.0.3     rsconnect_0.8.16    assertthat_0.2.1    httr_1.4.1          rstudioapi_0.10    
[46] R6_2.4.1            compiler_3.6.2   

1 Ответ

0 голосов
/ 26 января 2020

Мне удалось решить эту проблему, удалив withSpinner() из ui.R. Это было в строке 261-263:

mainPanel(
          withSpinner(uiOutput("pdf"))
        ))))),

Исправление:

mainPanel((uiOutput("pdf")))
        )))),

Я не совсем уверен, почему это решило проблему, хотя ...

...