将表导出到csv-将列表中的表分开 - 闪亮

时间:2015-04-28 12:37:35

标签: r csv shiny export-to-csv

我有一个表列表(df_list)。我想将它们导出到闪亮的csv。将表列表导出到csv时,我在excel中打开它们。在excel中,表的列表放在列中,tablename.colname引用的列。我希望将表格标记为带有单独列号的tble名称,如下图所示。

 Cy3 control
          Cy5     Cy3    Cy5   Cy3
    Min.    0   14170   6043    15
    1st Qu. 1   14710   6329    16
    Median  1   14960   6833    16
    Mean    3.2 15190   6679    16.47
    3rd Qu. 4.5 15830   7008    17
    Max.    15  16070   7309    19

    Cy3.control.Cy5 Cy3.control.Cy3 Cy5.control.Cy5 Cy5.control.Cy3
Min.              0             170        6043              15
1st Qu.           1           14710        6329              16
Median            1           14960        6833              16
Mean            3.2           15190        6679           16.47
3rd Qu.         4.5           15830        7008              17
Max.             15           16070        7309              19

是否还可以添加一个单元格,在该单元格上方提供有关表格的信息,例如实验名称等,但不与其他单元格交互。

我用来生成文件的代码如下:

UI.R:

shinyUI(fluidPage(
  fluidRow(
    column(4,
             fileInput("rawdata", "Enter your .csv file"),
             br,
             textInput('table_name', 'Data table name to save'),
             downloadButton('downloadtable', 'Save data table to .csv')
             ),

  ) #end fluidrow
 )  ### Fluid page end 
)    #### Shiny UI end

Server:


  #### Initiate shinyServer
  shinyServer(function(input, output) {

    ### This reactive function will take the input "inFile" from the UI.R and store it as data
    inFile<-reactive({
      file1<-input$rawdata
      if(is.null(file1)) stop ("Please Upload a Valid .csv file")
      datas<-fread(file1$datapath,)


      dtableInput<- reactive({
        if(is.null(inFile())) 
          return()

        datas<-inFile()        

        ## apply the following functions over the list

        df_list<-lapply(df_list,function(x){

          ## store the summaries of the Cy5 and Cy3 by block

          Cy5<-summary(x$y1)

          Cy3<-summary(x$y2)

          cbind(y1,y2)    

        })


      })

      output$downloadtable<-downloadHandler(                             #### called from UI
        filename = function() {paste(input$table_name, '.csv', sep='')},
        content = function (file){
          write.csv(dtableInput(),file)
        })

    }) ## end of app

1 个答案:

答案 0 :(得分:3)

好的,花了一段时间,因为我之前从未使用过Shiny的fileInputdownLoad按钮。基本上我在下面发布的内容可能接近你想要的。它允许您选择要上载的文件,然后选择下载它的位置。

我没有构建您的汇总表,我认为您可以自己处理它并且它会混淆文件处理问题。

有一点需要注意的是,它在普通的RStudio查看器中不起作用(可能是一个错误?它不保存文件),你必须使用浏览器(单击Run App按钮旁边的下拉列表并选择{{1 (见下面的截图)

ui.R:

Run External

server.R:

shinyUI(fluidPage(
  fluidRow(
     column(4,
            fileInput("rawdata", "Enter your .csv file"),
            br(),
            textInput('table_name', 'Data table name to save'),
            downloadButton('downloadtable', 'Save data table to .csv')
      )

  ) #end fluidrow
)  ### Fluid page end 
)    #### Shiny UI end

enter image description here