t********m 发帖数: 939 | 1 【 以下文字转载自 DataSciences 讨论区 】
发信人: tulipdream (xiaohuaidan), 信区: DataSciences
标 题: 请教一个R问题:怎么rbind一系列data,如data1,data2,....data1000
发信站: BBS 未名空间站 (Thu Nov 13 17:35:36 2014, 美东)
有没有一个简单点的方法,类似于rbind(data1-data1000)的,求各位不吝赐教,谢谢
! | K******c 发帖数: 619 | | k*******a 发帖数: 772 | 3 如果data1-data1000在一个list的话,就用do.call函数
否则可以试试
mycall = c("rbind", paste0("data", 1:1000))
mycall = lapply(mycall, as.name)
result = eval(as.call(mycall)) | d********t 发帖数: 837 | 4 Reduce(rbind, list(data1,data2,data3,data4))
example:
Reduce(rbind, list(data.frame(x1=c(1,2,3),x2=c(2,3,4)),data.frame(x1=c(5,6,7
),x2=c(7,5,4)),data.frame(x1=c(5,4,3),x2=c(7,6,5)))) | n*****3 发帖数: 1584 | 5 mget the list of dataframe by regular expression
then Reduce this list with rbind
,7
【在 d********t 的大作中提到】 : Reduce(rbind, list(data1,data2,data3,data4)) : example: : Reduce(rbind, list(data.frame(x1=c(1,2,3),x2=c(2,3,4)),data.frame(x1=c(5,6,7 : ),x2=c(7,5,4)),data.frame(x1=c(5,4,3),x2=c(7,6,5))))
| H*H 发帖数: 472 | 6 Reduce跟do.call都能实现,但是要是你的数据都比较大,这两个都比较慢
dplyr包的rbind_all是 do.call(rbind, list)的c++版本,
dplyr::rbind_all在数据量比较大时可以轻松提速十倍 | w*******9 发帖数: 1433 | 7 most intuitive way (similar to kirklanda's solution):
a <- paste("data",1:1000,sep="",collapse=",")
eval(parse(text=paste(c("rbind(",a,")"),sep=""))) | z******n 发帖数: 397 | |
|