如何 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))
我使用以下 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))