如何在R Shiny中选择一个目录并输出所选目录

dor*_*emi 2 r shiny

请问有什么简单的方法如何允许 R Shiny 应用程序的用户(本地,而不是服务器上)从计算机中选择一个目录,然后输出路径?我找不到简单的方法,例如fileInput选择文件。我希望用户能够在整个PC上搜索文件夹,然后选择该文件夹,并且该文件夹的路径将显示在Shiny应用程序中,例如 C:\users\Jane\folder. 在下面的答案中,我只能搜索当前工作目录中的文件夹,而不是整个电脑,并且文件夹的路径不会显示在 Shiny 应用程序中。

Big*_*ist 5

你可以考虑一下shinyFiles套餐。

在服务器端您使用 shinyDirChoose(input, id = 'folder', ...),然后可以通过 访问所选文件夹input$folder

可重现的例子:

library(shiny)
library(shinyFiles)
shinyApp(
  shinyUI(bootstrapPage(
    shinyDirButton('folder', 'Select a folder', 'Please select a folder', FALSE)
  )),

  shinyServer(function(input, output) {
    shinyDirChoose(input, 'folder', roots=c(wd='.'), filetypes=c('', 'txt'))

    observe({
      print(input$folder)
    })
  })
)
Run Code Online (Sandbox Code Playgroud)


mik*_*key 5

有些人询问如何以不同的方式选择目录。您可以通过更改规范来做到这一点,roots如下所示。

library(shiny)
library(shinyFiles)

ui <- fluidPage(
  shinyDirButton('folder', 'Select a folder', 'Please select a folder', FALSE)
)
server <- function(input, output){
  volumes = getVolumes() # this makes the directory at the base of your computer.
  observe({
    shinyDirChoose(input, 'folder', roots=volumes, filetypes=c('', 'txt'))
    print(input$folder)
  })
}
shinyApp(ui=ui, server=server)
Run Code Online (Sandbox Code Playgroud)