Как читать наборы данных из папки, указанной в Reactive Shiny UI? - PullRequest
0 голосов
/ 20 апреля 2019

У меня есть несколько папок, содержащих .sas7bdat файлы. Я хочу создать блестящее приложение, в котором я хочу указать имя папки из функции selectInput в renderUI. Я нашел ответ, из которого я могу добраться до той части, где я могу выбрать папку, но теперь я хочу прочитать данные в папке и выполнить их анализ.

Я попытался использовать вывод, сгенерированный функцией dir, но он не работает. Пожалуйста, смотрите мой код ниже.

library(shiny)

  ui <- fluidPage(

    titlePanel("Folder Selector"),
      fluidRow(
          sidebarPanel(
            uiOutput("select.folder")
          ),

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

  server <- function(input, output){

    root <- 'C:/Users/Username/Documents/Mylearnings/data'

    output$select.folder <- renderUI(expr = selectInput(inputId = 'folder.name',
                                                        label = 'Folder Name',
                                                        choices = list.dirs(path = root,
                                                                            full.names = FALSE,
                                                                            recursive = FALSE)))

    dir <- reactive({
          paste0(root,input$folder.name)
    })

    output$dir <- renderPrint(dir())
  }

input.sas <- function(ds)(
      read_sas(str_c(dir,"/",ds,".sas7bdat"))
    )

    a <- input.sas(data_a)
}

shinyApp(ui = ui, server = server)

Например, если я удалю следующую часть кода, описанного выше, то результат будет соответствовать ожидаемому в output$dir,

input.sas <- function(ds)(
      read_sas(str_c(dir,"/",ds,".sas7bdat"))
    )

    a <- input.sas(data_a)

но я хочу, чтобы вывод этого файла был сохранен в dir и мог быть пропущен через функцию str_c.

Это дает мне следующую ошибку.

Error in stri_c(..., sep = sep, collapse = collapse, ignore_null = TRUE) : 
  object 'data_a' not found

Любая помощь высоко ценится. Заранее спасибо.

...