Использование normalizePath для объекта brightFileChoose - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь взять значение из 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)

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...