首页 > 解决方案 > 如何从 Reactive Shiny UI 中指定的文件夹中读取数据集?

问题描述

我有多个包含.sas7bdat文件的文件夹。我想创建一个闪亮的应用程序,我想在其中提供来自 inside 函数的文件夹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

非常感谢任何帮助。先感谢您。

标签: rshinyshiny-servershiny-reactivity

解决方案


推荐阅读