在闪亮的app中选择文件夹或文件夹目录

时间:2017-04-06 19:11:33

标签: r csv shiny

我使用闪亮的问题。我想选择我想在我的应用程序中使用的所有文件保存的文件夹1)通过将工作目录设置为该文件夹路径或2)将此文件夹中的所有csv数据上传到我的应用程序以进行进一步处理。 1)我找到了shinyFiles包,但它非常慢 - 不是因为我的PC-而且给了我错误:

Warning: Error in dir.create: invalid 'path' argument
Stack trace (innermost first):
    59: dir.create
    58: dirCreate
    57: observerFunc
     2: runApp
     1: shinyFilesExample

当我选择一个文件夹并且创建文件夹按钮变为可点击时,我将新文件夹的名称放入其中并单击" +"在那个小组下面。谁知道为什么?尽管这种方法有效,但速度非常慢。代码如下:

library(shiny)
library(shinyFiles)

ui<-fluidPage(sidebarLayout(

  sidebarPanel(
    shinyDirButton("dir", "Chose directory", "Upload")
  ),

  mainPanel(
    h4("output$dir"),
    verbatimTextOutput("dir"), br()

  )

))


server <- function(input,output,session){

  # dir
  shinyDirChoose(input, 'dir', roots = getVolumes())
  dir <- reactive(input$dir)
  output$dir <- renderPrint(dir())




}
shinyApp(ui = ui, server = server)

还有其他选择吗?也许通过fileInput函数上传所有csv数据?或者另一种方式?它不应仅在本地但在服务器上工作,因此choose.dir可能不是正确的方法。 非常感谢

2 个答案:

答案 0 :(得分:1)

到目前为止,据我所知,shinyfiles是输入文件夹的唯一方法。它无法在服务器上运行,因为不允许浏览器选择文件夹(出于安全考虑)。

如果你希望它在服务器上工作,那么压缩方式可能是唯一的方法(但我不知道它是否可以实际完成)

答案 1 :(得分:1)

功能 getwd()获取当前的工作目录。

server <- function(input,output,session){

  # dir
  shinyDirChoose(input, 'dir', roots = c(name=getwd()))
  dir <- reactive(input$dir)
  output$dir <- renderPrint(dir())
}