Год назад я создавал приложение Shiny и спрашивал , как отобразить папку по умолчанию с глянцевыми файлами.
В это время с помощью комментаторов я построил воспроизводимый пример, который работал:
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
Я не могу понять, что сейчас не так. Я попытался установить предыдущую версию блестящих файлов, но на удивление все еще получал ту же ошибку. Так что это должен быть какой-то другой пакет.
Буду признателен за любые идеи!
UPD. Добавление req (is.list (input $ dir)) решило проблему, теперь я могу выбрать файл, работающий в приложении, но если я запускаю его из Docker, я не вижу общий каталог ...