2014-01-16 102 views
1

我有大約一百個excel文件需要導入到R併合並。所有excel文件都有四列,每一列都需要導入。這些文件看起來像一個如下:導入多個文件名爲R的Excel文件R

1  127   122 
1  87  
2  107  
1  136 k  
1  210  

我還需要添加的文件名作爲每一行第五列。所有的Excel文件都在同一個文件夾中。

到目前爲止,我已經嘗試以下操作:

library(xlsx) 
setwd("c:/temp/") 
filenames <- list.files(pattern=".xls") 
do.call("rbind", lapply(filenames, function(x) read.xlsx(file=x, sheetIndex=1, colIndex=(1:4), header=FALSE, FILENAMEVAR=x))) 

我獲得以下錯誤:在rbind錯誤(deparse.level,...):參數列數不匹配

我有如果我僅限於第一列和第二列,則可以將問題定位到將第三列和第四列中的單元格清空。

+1

您是否在每個文件中有不同數量的列? http://r.789695.n4.nabble.com/Flexible-rbind-td3383857.html – Freak

+0

是的,一些文件有空的第三列。 – user3190577

+0

你見過我與你分享的鏈接嗎? – Freak

回答

5

自己想出來。關鍵是使用rbind.fill而不是rbind

library(plyr) 
df.list <- lapply(filenames, function(x) read.xlsx(file=x, sheetIndex=1, 
        colIndex=1:4,as.data.frame=TRUE, header=FALSE, FILENAMEVAR=x)) 
final.df <- rbind.fill(df.list) 
+0

謝謝你在你自己想出來之後發佈答案;我相信這可能對其他人有用,而不是每個人都有用。 plyr不是很棒嗎? – prooffreader