使用ShinyFiles选择文件夹时停止使用更新

时间:2018-11-15 20:34:38

标签: r docker shiny

一年前,我正在构建一个Shiny应用程序,asking是如何显示带有ShinyFiles的默认文件夹。

这时,在评论员的帮助下,我建立了一个可复制的示例,该示例正在起作用:

library(shiny)
library(shinyFiles)

ui <- fluidPage( # Application title
  mainPanel(
    shinyDirButton("dir", "Input directory", "Upload"),
    verbatimTextOutput("dir", placeholder = TRUE)  
  ))

server <- function(input, output) {
  shinyDirChoose(
    input,
    'dir',
    roots = c(home = '~'),
    filetypes = c('', 'txt', 'bigWig', "tsv", "csv", "bw")
  )

  global <- reactiveValues(datapath = getwd())

  dir <- reactive(input$dir)

  output$dir <- renderText({
      global$datapath
  })

  observeEvent(ignoreNULL = TRUE,
               eventExpr = {
                 input$dir
               },
               handlerExpr = {
                 home <- normalizePath("~")
                 global$datapath <-
                   file.path(home, paste(unlist(dir()$path[-1]), collapse = .Platform$file.sep))
               })
}

# Run the application
shinyApp(ui = ui, server = server)

现在是时候更新我的Shiny应用程序了,我更新了R版本和许多软件包,但它停止了工作。我收到以下错误:

Warning: Error in $: $ operator is invalid for atomic vectors
  75: unlist
  72: observeEventHandler
   1: shiny::runApp

我现在不知道出了什么问题。我尝试安装先前版本的ShinyFiles,但令人惊讶的是仍然出现相同的错误。所以必须是其他软件包。

我将不胜感激!

UPD。添加req(is.list(input $ dir))解决了该问题,现在我可以在应用程序中进行文件选择了,但是如果我从Docker运行它,则看不到共享目录...

1 个答案:

答案 0 :(得分:2)

好吧,刚刚收到shinyFiles开发人员的回复:https://github.com/thomasp85/shinyFiles/issues/109#issuecomment-439185038

插入req(is.list(input$dir))解决了该问题。