r语言 - 如何在下拉菜单中填充闪亮应用程序中子目录的csv文件



可能的重复

无法在 R 闪亮中动态填充下拉菜单

我有一个闪亮的小应用程序,为用户提供了一些下拉选项。我创建了一个子目录,比如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,而不是在 shiny 应用程序内的单独子目录中。

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

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.Rserver.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文件中的分隔符是逗号,这可能会导致问题。

最新更新