2016-01-21 49 views
-1

我使用了兩次lapply函數來分析已通過的學生的數據,並通過class1-5分析了30所學校的失敗學生的數據。使用拆分功能,根據學校名稱拆分了兩個數據框。現在,我需要在一個文件中看到已通過的學生和失敗的學校學生(學校方面)列表。如何添加兩個lapply函數的輸出文件

這裏是我的代碼:現在

spt1 <-split(pass, pass$school) 
#^result1 is a dataframe, splitting school wise in pass df 

abc=lapply(names(spt1), function(x){write.table(spt1[[x]], 
    file = paste("C:/Users/Documents/Output/Pass", x, ".csv"), row.names = FALSE ,sep = ",")}) 
#^for loop to seggregate passed list across all schools 

spt2 <-split(fail, fail$school) 
#^splitting failur list in the dataframe based on schools 

def=lapply(names(spt2), function(x){write.table(spt2[[x]], 
    file = paste("C:/Users/Documents/Output/Fail", x, ".csv"), row.names = FALSE , sep = ",",)}) 
#^for loop to seggregate failure list across all schools 

,我希望看到在一個單一的PDF或CSV學校的通過和失敗的學生的數據。 30個學校的預期輸出爲30pdf,每個pdf包含已通過和失敗的學生列表

注意:跨兩個文件夾的所有文件的列是不同的。

回答

1

這將是很好的一些示例數據。這會給你一個可能的解決方案的想法嗎?

install.packages('gridExtra') 

require(gridExtra) 

for(i in 1:length(names(spt1))){ 
    pdf(file = "test.pdf", width=28, height=21, paper='a4') 


    data1 <- spt1[[i]] 
    loops <- ceiling(nrow(data1)/40)  
     for(j in 1:loops){ 
      from <- max(1,(j-1)*40) 
      to <- min(nrow(data1),j*40) 
      grid.table(data1[from:to,], show.rownames = FALSE, gpar.coretext=gpar(fontsize=8)) 
      grid.newpage()  
     } 


    grid.newpage() 

    data2 <- spt2[[i]] 
    loops <- ceiling(nrow(data2)/40)  
     for(j in 1:loops){ 
      from <- max(1,(j-1)*40) 
      to <- min(nrow(data2),j*40) 
      grid.table(data2[from:to,], show.rownames = FALSE, gpar.coretext=gpar(fontsize=8)) 
      grid.newpage()  
     } 
    dev.off() 

} 

我的代碼使用gridExtra包並將您的表寫入pdf文檔。您可以根據封裝幫助添加文本和標題...

當然還有使用LaTeX的解決方案...也許您想諮詢this question

EDITS:

  • 增加,以適應一個頁面
  • 在talbe-塊另一個循環編輯的pdf -function爲了得到A4紙
+0

謝謝您響應。我需要在每個數據框中添加兩個包含30個文件的數據框spt1和spt2,並且應該在pdf文檔中看到 – Ram

+0

看起來我有點慢,但請您詳細描述一下:您想合併兩個'data.frames'並將它們寫入pdf?你是什​​麼意思「每個數據幀包含30個文件」? – Seb

+0

是的。你可以看到上面的代碼,我應用了兩個for循環。每個for循環我得到輸出爲30個文件,現在,我希望看到在其他循環中將所有30個文件添加到其他30個文件,並將它們寫入pdf – Ram