Я пытаюсь взять значение из shinyFiles::shinyFileChoose
и использовать его в функции из R. Чтобы сделать это, (я думаю) мне нужно использовать normalizePath
для объекта shinyFileChoose
. Когда я это делаю, я получаю ошибку:
Предупреждение: ошибка в path.expand: неверный аргумент 'path'
Я написал простой пример, чтобы получить эта ошибка. Когда я настраиваю подобный код, используя shinyDirChoose
, я могу без проблем запускать функции в R, но shinyFileChoose
ведет себя по-другому. Когда вы запустите этот пример, вам нужно выбрать какой-нибудь случайный файл csv
или txt
на вашем компьютере.
library(shiny)
library(shinyFiles)
# simple example function
fun1 <- function(x){read.csv(x)}
# simple shiny code to read find a file and read it in.
server <- function(input, output, session) {
# base directory for fileChoose
volumes = shinyFiles::getVolumes()
# input_file
shinyFiles::shinyFileChoose(input, "input_file", roots=volumes, session=session, filetypes=c('txt', 'csv'))
#filename_input_file <- shiny::reactive({shinyFiles::parseFilePaths(volumes, input$input_file)[length(shinyFiles::parseFilePaths(volumes, input$input_file))]})
filename_input_file <- shiny::reactive({shinyFiles::parseFilePaths(volumes, input$input_file)})
# observe filename changes
shiny::observe({
if(!is.null(filename_input_file)){
print(filename_input_file())
output$input_file <- shiny::renderText(filename_input_file())
}
})
# run the function
shiny::observeEvent(input$runFUN, {
fun1(normalizePath(filename_input_file()))
})
}
ui <- shiny::fluidPage(
# App title ----
shiny::titlePanel("test"),
# Sidebar layout with input and output definitions ----
shiny::sidebarLayout(
shiny::sidebarPanel(
shinyFiles::shinyFilesButton('input_file', "file", title="Select a csv", multiple=FALSE),
shiny::actionButton("runFUN", "run function")
), # this works with option 2
# Main panel for displaying outputs ----
shiny::mainPanel(
)
)
)
shiny::shinyApp(ui, server)
Заранее спасибо.