#r #shiny #shinyapps #shiny-reactivity
Вопрос:
Мой приведенный ниже код успешно получает путь к папке с ShinyDirChoose
и передает его ShinyFileButton
, в котором отображаются файлы в этой папке, но я не получаю от . parseFilePaths()
Для отладки я распечатал содержимое input$select_ms_file
, и это вложенный список, где-то в нем появляется имя файла. Новичок в реактивных объектах и просматривал похожие посты, но не уверен, где что-то идет не так. Я публикую соответствующие части кода:
ui.R
filler_box <- box(title = "Auto-filler",
status = "primary", solidHeader = TRUE,
width = 12,
column(1,
shinyDirButton("ms_folder",
"Select folder",
"Select a project folder")
),
column(4,
verbatimTextOutput("selected_ms_dir")),
column(1,
shinyFilesButton(
id = "select_ms_file",
label = "Select file",
title = "Please select the MS data sheet file:",
multiple = F)
),
column(4,
verbatimTextOutput("selected_ms_file"))
сервер.R
# Select folder
shinyDirChoose(input, "ms_folder", roots = roots, session = session)
selected_ms_folder <- reactive({
parseDirPath(roots, input$ms_folder)
})
output$selected_ms_dir <- renderPrint({
if (is.integer(input$ms_folder)) {
cat("No folder selected")
} else {
selected_ms_folder()
}
})
# Select file
selected_ms_file <- reactive({
shinyFileChoose(
input = input, "select_ms_file",
roots = c("path" = selected_ms_folder()),
session = session)
req(input$select_ms_file, selected_ms_folder())
if (is.null(input$select_ms_file))
return(NULL)
return(
parseFilePaths(
selected_ms_folder,
input$select_ms_file)$datapath)
})
output$selected_ms_file <- renderPrint({
if (is.integer(input$select_ms_file)) {
cat("No files selected")
} else {
selected_ms_file()
}
})