如何 add/merge 列表中的数据框

How to add/merge dataframes in a list

我使用以下 for 循环读取 7 个 csv 文件并将它们添加到列表中。

list <- list()
l <- 1
for(i in 1:7){
      data <- read.csv(paste("file",i,".csv",sep=""),header=FALSE) 
      list[[l]] <- data 
      l <- l + 1
}

所以现在我有一个名为 "list" 的列表,其中包含 7 个数据帧,对吧?

8 个数据帧中的每一个都包含相同的三列(姓名、姓氏、年龄)。 我现在要补充:

df <- dataframe(NAME,SURNAME,AGE) ## to each dataframe in the list.

这有帮助吗?我的问题是,我怎样才能自动实现列表中所有 7 个对象的目标!

如果'lst'有7个data.frames并且想'rbind'第8个数据集到列表中的每个数据集,我们可以使用Map

 Map(rbind, lst, list(d1))

或使用lapply

lapply(lst, rbind, d1)

更新

如果'lst'的长度为8,并且想将前7个元素与第8个元素中的数据集绑定,那么你可以这样做

 Map(rbind, lst[-8], lst[8])

数据

set.seed(24)
lst <- lapply(1:7, function(i) as.data.frame(matrix(sample(0:10, 3*10, 
         replace=TRUE), ncol=3)))

set.seed(49)
d1 <- as.data.frame(matrix(sample(1:20, 3*10, replace=TRUE), ncol=3))

或者,如果最终目标只是确保将所有 8 个 CSV 文件合并为一个 data.frame:

# generate some sample files
files <- sprintf("iris%d.csv", i)

for (i in 1:8) { write.csv(iris, files, row.names=FALSE) }

# make one happy data frame
do.call(rbind, lapply(files, read.csv))