2014-01-16 67 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