将多个.csv文件导入R,具有不相等的行

时间:2014-01-02 09:55:13

标签: r

我想在一个数据框中合并多个csv文件。 我有22个csv文件,每个文件有1个属性,行数不等

我使用过这段代码却收到错误

temp = list.files(pattern="*.csv")
myfiles = lapply(temp, read.delim)
df<-data.frame(myfiles)

错误:

Error in data.frame(list(Auto = c(67L, 964L, 730L, 443L, 1191L, 160L,  : 
  arguments imply differing number of rows: 1193, 193, 737, 1468, 3500, 3707, 3499, 3459, 1211, 5029, 5024, 2804, 3226, 3439, 2004, 2092, 2778

2 个答案:

答案 0 :(得分:1)

如果确实所有文件都有一个属性,那么rbind就可以了。我们可以简洁地使用它:

df <- do.call(rbind, lapply(list.files(pattern = "*.csv"), read.csv))

我们对每个文件名应用read.csv,并使用list返回data.frame lapplydo.call。然后,我们使用rbind将所有数据框作为{{1}}的参数提供。

答案 1 :(得分:0)

plyr 包中有一个函数rbind.fill,它将合并data.frames并为空单元格引入NA:

library(plyr)
concat <- rbind.fill(mtcars[c("mpg", "wt")], mtcars[c("wt", "cyl")])
concat[25:40, ]

 mpg    wt cyl
25 19.2 3.845  NA
26 27.3 1.935  NA
27 26.0 2.140  NA
28 30.4 1.513  NA
29 15.8 3.170  NA
30 19.7 2.770  NA
31 15.0 3.570  NA
32 21.4 2.780  NA
33   NA 2.620   6
34   NA 2.875   6
35   NA 2.320   4