如何在下拉菜单中填充闪亮应用程序内子目录的 csv 文件。?

How to populate csv files of a subdirectory inside shiny app in drop-down menu.?

可能重复

我有一个闪亮的小应用程序,其中包含一些供用户使用的下拉选项。我在闪亮的应用程序中创建了一个子目录,比如 data,其中包含要显示在下拉菜单中的 csv 文件。我使用了下面的代码,但我无法访问 data 子目录中的文件。

在 ui.r:

    filenames <- list.files(pattern="\.csv") 
   selectInput(inputId="dataset",label= "Choose platform annotation file",filenames)

server.r:

dataInput <- reactive({
    if (grepl("[/\\]", input$dataset)) {
      stop("Invalid dataset")
    }
    read.csv(file.path("data", input$dataset))
  })

  output$annotation <- renderDataTable({
    withProgress(message = 'Loading Data . . .', {
      dataInput()

    })
  })

上面的代码允许我访问 csv 文件,如果它们在我的 server.rui.r 应用程序中,而不是在闪亮应用程序中的单独子目录中。

我还想知道这是访问上述代码数据的正确方法吗,因为我无法在下面的代码中进一步访问数据。

inputdata <- reactive({ 

    df1 <- data.frame()
    df1 <- dataInput()
    if (is.null(df1))
      return(NULL)
    df1[] <- lapply(df1, as.character)
    df1 <- df1[df1[,3]!='',]
    df1 <- df1[!grepl('[/]', df1$Gene.Title),]
  }) 

我也试过这个

    filenames <- list.files(pattern="\.csv$data") ## data is my folder inside shiny app.

使用 csv 文件访问 shiny 应用程序中的 data 子目录,但无法执行。

已编辑:输入文件示例

ID                        Gene Title                      Gene Symbol
1007_s_at   discoidin domain receptor tyrosine kinase 1    DDR1
1053_at     replication factor C (activator 1) 2, 40kDa    7-Mar
117_at      heat shock 70kDa protein 6 (HSP70B')           HSPA6
121_at      paired box 8                                   PAX8
1255_g_at   guanylate cyclase activator 1A (retina)        GUCA1A
1294_at     ubiquitin-like modifier activating enzyme 7    UBA7 
1320_at     protein tyrosine phosphatase, non-receptor     PTPN21
1405_i_at   chemokine (C-C motif) ligand 5                 CCL5/CCL6
1431_at      
1438_at     EPH receptor B3                                EPHB3
1487_at     estrogen-related receptor alpha                ESRRA
1494_f_at   cytochrome P450, family 2                      CYP2A6/CYP2

当你调用list.files时,你需要指定你想要列出文件的路径,默认路径是当前目录,也就是你有ui.R的目录和 server.R 文件。

尝试:

filenames <- list.files(path="data",pattern="\.csv")

您可以将此行放在 ui.R 文件中的 shinyUI(...) 之前。

对于你代码的第二部分,看起来你想要清理数据,你可以这样做(我将 inputdata 更改为 clean_data 以使其更清楚):

clean_data <- reactive({ 
        #get the data 
        df1 <- dataInput()

        if (is.null(df1))
                return(NULL)
        df1[] <- lapply(df1, as.character)

        #looks for lines that have only zero or more blanks or a slash in column 3 and removes them
        df1 <- df1[!grepl("$ *^|/",df1[,3]),]
        df1
}) 

#do what you want with the data, for expample render it as another table
 output$annotation <- renderDataTable({
            withProgress(message = 'Loading Data . . .', {
                  clean_data()

            })
    })

此外,查看您的输入文件示例,您有很多 Gene title 带有逗号,如果您的 csv 文件中的分隔符是逗号,这可能会导致问题。