print to pdf file using grid.table in r - too many rows to fit on one page

后端 未结 6 1772
没有蜡笔的小新
没有蜡笔的小新 2020-12-06 11:53

I\'m trying to output a dataframe of about 40 rows and 5 columns to a .pdf file using grid.table in gridExtra package of R.

However, 40 rows is too long for a page

6条回答
  •  猫巷女王i
    2020-12-06 12:23

    Try this for drawing table on a pdf file that span multiple pages using gridExtra package:

    1. Adjust pdf device aspect ratio

      pdf(file = myfile.pdf, height = 12, width = 26)
      
    2. Split the large data frame into chunks and call grid.newpage before drawing a table.

      require(gridExtra)
      pdf(file = myfile.pdf, height = 12, width = 26)
      grid.newpage()
      grid.table(sga_hits[1:38, ], show.rownames = FALSE)
      grid.newpage()
      grid.table(sga_hits[39:75, ], show.rownames = FALSE)
      dev.off()
      

    Automate the above as follows:

        require(gridExtra)
        pdf(file = myfile.pdf, height = 12, width = 26)
        total_rows_per_page = 38 
        start_row = 1 
    
        if(total_rows_per_page > nrow(sga_hits)){
             end_row = nrow(sga_hits)
        }else {
             end_row = total_rows_per_page 
        }    
    
        for(i in 1:ceiling(nrow(sga_hits)/total_rows_per_page)){
    
           grid.newpage()   
    
           grid.table(sga_hits[start_row:end_row, ], show.rownames = FALSE)
    
           start_row = end_row + 1
    
           if((total_rows_per_page + end_row) < nrow(sga_hits)){
    
                end_row = total_rows_per_page + end_row
    
           }else {
    
                end_row = nrow(sga_hits)
           }    
        }
    
        dev.off()
    

提交回复
热议问题