我有大约一百个excel文件,我需要导入到R并合并。所有excel文件都有四列,每一列都需要导入。文件如下所示:
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,...)出错:参数列数不匹配
我已将问题定位到第三列和第四列中的空单元格,因为如果我将其仅限制为第一列和第二列,函数将完美运行。
答案 0 :(得分: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)