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

时间:2015-03-07 11:30:08

标签: r csv shiny

可能重复

Cannot populate drop down menu dynamically in R shiny

我有一个小巧的应用程序,为用户提供了一些下拉选项。我在闪亮的app中创建了一个子目录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文件访问闪亮应用内的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

1 个答案:

答案 0 :(得分:1)

当您致电list.files时,您需要指定要列出文件的路径,默认路径是当前目录,即您拥有ui.R和{的目录{1}}档案。

尝试:

server.R

您可以将此行放在filenames <- list.files(path="data",pattern="\\.csv") 文件中的shinyUI(...)之前。

对于代码的第二部分,您可能会想要清理数据(我将ui.R更改为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文件中的分隔符是逗号,则可能会出现问题。