R有光泽:文件错误(文件," rt"):无效'描述'争论

时间:2015-08-12 21:13:11

标签: r shiny

标题显示我得到一个非常常见的错误。然而,它是在我闪亮的应用程序中,我不知道发生了什么。

我有一个输入文件,其中包含一列中的项目列表以及第二列中的.csv文件的名称。这些csv文件位于app文件夹的数据目录中。触发应用程序时,系统会要求用户输入包含数据集/项目列表的文件。该列表在第一个选项卡中打开。我的目标是单击特定行,即项目名称,相应的.csv文件应在第二个选项卡中打开。当我第一次单击时,相应的csv文件将在第二个选项卡中打开,但当我返回第一个选项卡并再次单击时,它会给我以下错误:

Error in file(file, "rt") : invalid 'description' argument

我附上了我的所有代码和相应的文件。

ui.R

dashboardPage(
  dashboardHeader(title = 'Title',titleWidth = 500),

  dashboardSidebar(width = 500,
    fluidRow(
      column(6, div(style = "height:10px"), 
             fileInput(inputId = 'inputdataset', label = 'Input Datasets', accept = c('csv','tsv','txt')))
    )
  ),

  dashboardBody(

    tabsetPanel(type="tabs", id = "tabvalue",
                tabPanel(title = "Project List", value='tab',DT::dataTableOutput('projects')),
                tabPanel(title = "Input Table", value = 'tab1', DT::dataTableOutput('table'))
    )
  )
)

server.R

library(shiny)
library(shinydashboard)

options(shiny.maxRequestSize = 30*1024^2)

shinyServer(function(input, output, session){

  # read in initial data input.csv i.e. a file containing list of projects
  # this file has a column of projects and a column of corresponding csv files
  # the third column in the table i.e. 'limma' specifies the names of the csv file
  # the data directory of the app folder contains those .csv files
  datainput <- reactive({
    infile <- input$inputdataset
    if(is.null(infile))
      return(NULL)
    read.csv(infile$datapath,check.names=F)
  })

  # output list of projects in projects tab
  # you can select any of the projects
  output$projects <- DT::renderDataTable({
    DT::datatable(datainput(), selection = 'single')
  })

  # go to tab1 when a project is selected 
  observe({
    s <- input$projects_rows_selected
    if(length(s)){
      updateTabsetPanel(session = session, inputId = "tabvalue", selected = 'tab1')
    }
  })

  # when a project is selected, the corresponding limma file is opened
  datasetInput <- reactive({
    d <- datainput()
    s <- input$projects_rows_selected
    dat <- d[s, , drop = FALSE]
    limma <- as.character(dat$limma)
    file <- paste('data/',limma,sep='')
    dd <- read.csv(file=file)
    dd
  })

  # output data for selected project in tab1
  output$table <- DT::renderDataTable({
      DT::datatable(datasetInput(),
                    selection = 'single')
  })
})

输入文件:input.csv如下所示:

Project,limma
Hdac3KO,Hdac3KO.csv
Ezh2KO,Ezh2KO.csv

这两个项目的.csv文件位于应用程序的data / dir中,如下所示:

这是项目1文件,Hdac3KO.csv:

ID,SYMBOL,ENTREZID,ENSEMBL
17278840,Mir376a,723855,NA
17350196,Scgb3a2,117158,ENSMUSG00000038791
17278838,Mir376b,723934,ENSMUSG00000076006
17326069,Retnla,57262,ENSMUSG00000061100
17315245,Krt18,16668,ENSMUSG00000023043

这是项目2文件,Ezh2KO.csv:

ID,SYMBOL,ENTREZID,ENSEMBL
17278779,NA,NA,NA
17255543,Gm53,193022,NA
17335467,Cdkn1a,12575,ENSMUSG00000023067
17273304,Cbr2,12409,ENSMUSG00000025150

我真的很感激任何帮助。

1 个答案:

答案 0 :(得分:0)

我使用的是旧版本的软件包DT。已更新至DT_0.1.32,现在工作正常。