Выбор папки в Shiny App (локально и на сервере) для чтения файлов и сохранения результатов - PullRequest
0 голосов
/ 18 марта 2019

Я пытаюсь использовать предложенное решение здесь .Разница в том, что я хочу, чтобы пользователь выбрал две папки: одну для сохранения результата моего кода и одну, в которой есть все файлы.Теперь вопрос в том, как мне сохранить файлы во второй папке (input $ fileout).Есть ли способ передать этот путь к функции, которая обрабатывает мои входные файлы?Я думаю, что будет проблема разрешения.Изменить: я хотел бы использовать dataHandler внутри функции my.analysis (), так как мне нужно сохранить несколько файлов png, csv и некоторые определенные отформатированные файлы.Какой будет лучший подход?Мой блестящий приложение ничего не распечатывает, кроме того, что анализ сделан, загрузите результат.

Вот обновленный ui.R

library(shiny)
library(shinythemes) 
library(shinyWidgets)

 shinyUI(tagList(fluidPage(theme = shinytheme("lumen"),
                      includeScript("./www/text.js"),
                      titlePanel("Test"),

                      fluidRow(
                        column(4,

                                  tags$div(class="form-group shiny-
           input-container", 

                         tags$div(tags$label("Choose a
    folder", class="btn btn-primary",
                                                              tags$input(id = "fileIn", webkitdirectory = TRUE, type = "file", style="display: none;", onchange="pressed()"))),
                                          tags$label("No folder choosen", id = "noFile"),
                                          tags$div(id="fileIn_progress", class="progress progress-striped active shiny-file-input-progress",
                                                   tags$div(class="progress-bar")
                                          )     
                                 )),


                                 verbatimTextOutput("tbl")
                        ), 

                       fluidRow(

                         column(8,
                                verbatimTextOutput("results"))

                       )
  ),
   HTML("<script type='text/javascript' src='getFolders.js'>
   </script>")
  )

  )          

И мой сервер.R

   library(shiny)
library(ggplot2)
library(shinythemes)
library(shinyWidgets)
library(flowCore)
source("myanalysis.R")
options(shiny.maxRequestSize=50*1024^2) 
shinyServer(function(input, output, session) {
  observeEvent(input$go, {
  df <- reactive({
    print(input$fileIn)
    # Below returns NULL, as it does not have any files in it yet.
     print(input$fileout)
    inFiles <- input$fileIn
    if (is.null(inFiles))
      return(NULL)


      my.analysis(fs = tmp,output=input$fileout)

  })
  output$tbl <-renderPrint(
   df()
  )

  output$results = renderPrint({input$mydata
  })

})
})

Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 19 марта 2019

Вот два варианта:

Вариант 1

Если вы хотите выбрать папку только на стороне сервера (это может быть локальная система, если ваше приложение работает локально), вы можете использовать ShinyFiles .

Вариант 2

Если ваше приложение работает на сервере, то вы не можете записывать данные в локальный каталог из вашего приложения Shiny. Решение в этом случае заключается в том, чтобы сохранить результаты на сервере, а затем разрешить пользователю загружать их с помощью функции downloadHandler .

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