Я заполняю selectInput с updateSelectInput, используя имена файлов из каталога. Пользователь выбирает, какой каталог будет заполняться с помощью входа radioButtons. Все работает, но когда приложение загружается или изменяется каталог, selectInput реактивно передает либо значение по умолчанию, либо последний выбранный файл из старого каталога (для запуска и изменения каталога соответственно). Это приводит к неудачной загрузке файла данных до тех пор, пока не будут выбраны selectInput.updateSelectВведите порядок операций/состояние гонки
Как я могу восстановить загрузку файла, чтобы дождаться обновления selectInput?
Вот соответствующий код ...
ui.R:
radioButtons("system", label = h3("System"),
choices = list("USAMS" = usamspath, "CFAMS" = cfamspath),
selected = usamspath),
selectInput("wheelSelect",
label = h3("Wheel"),
c("label 1" = "option1")),
server.R:
observe({
#Get and order wheelnames
details <- file.info(list.files(path = input$system,
pattern = "*AMS*.*", full.names=TRUE))
details <- details[with(details, order(as.POSIXct(mtime))), ]
wheels <- basename(rownames(details))
# Change values for input$wheelSelect
updateSelectInput(session, "wheelSelect",
choices = wheels,
selected = tail(wheels, n = 1))
})
wheelData <- reactive({
#Code to reload wheel when file changes
wheelFile <- reactiveFileReader(1000, session,
paste(input$system, input$wheelSelect, sep = "/"),
read.delim, skip = 4, comment.char = "=")
z <- wheelFile()
mungeCFWheel(z)
})
Проблема заключается в том, что вход $ wheelSelect получает, считываемых wheelData реактивная прежде чем он будет обновлен updateSelectInput в предыдущем наблюдении().