r - 使用shinyFiles进行文件夹选择在更新后停止工作

标签 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 运行它,我将看不到共享目录...

最佳答案

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

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

关于r - 使用shinyFiles进行文件夹选择在更新后停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53327513/

相关文章:

r - 应用程序内部的函数找不到在应用程序启动时加载的对象

r - 在函数中使用延迟赋值 : How do I send the promise back to the parent environment?

r - ggplot2 分面标签中的双重不等式

r - 应用归一化和结构更改后的数据值 NaN

docker - 如何将日志从 jwilder/nginx-proxy docker 镜像发送到 logstash?

javascript - Shiny 的模态窗口不接受 js 和 css

r - 数据框对象列中最长 NA 的长度

Docker 公开的端口在浏览器上不可用,但前者运行正常

.net - 与容器上RabbitMQ的连接问题

r - 在 Shiny 应用程序中存储用户上传的数据