全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
4368 4
2013-01-10
以下是用ls()显示的以d开头的data.frame,数据结构完全相同,如何合并成一个总的data.frame呢? 估计rbind()这个函数行,就是如何将ls()显示的结果放进rbind内的问题,请大家指点 [1] "d2005.csv"     "d2005_out.csv" "d2006.csv"     "d2006_out.csv"[5] "d2007.csv"     "d2007_out.csv" "d2008.csv"     "d2008_out.csv"[9] "d2009.csv"     "d2009_out.csv" "d2010.csv"     "d2010_out.csv"[13] "d2011.csv"     "d2011_out.csv" "d2012.csv"     "d2012_out.csv"
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-1-10 23:59:11
假设你有d1, d2, d3三个data frame

> ls()
[1] "d1" "d2" "d3"
> d1
  x y
1 1 2
> d2
  x y
1 3 5
> d3
  x y
1 3 2
> ds <- ls()
> ds
[1] "d1" "d2" "d3"
> out <- NULL
> for (i in ds) {
+ out <- rbind(out, get(i))
+ }
> out
  x y
1 1 2
2 3 5
3 3 2
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-1-11 04:37:59
最近在看R的关于language 方面的书,不过还不是用的很熟,试试下面的,应该还能再改进

和楼上一样,假设3个data frame

> ls()
[1] "d1" "d2" "d3"
> d1
  x y
1 1 2
2 2 3
> d2
  x y
1 2 4
2 3 6
> d3
  x   y
1 0 1.0
2 1 1.5
> ds <- ls()
> ds

那么一句就可以

> do.call("rbind", lapply(ds, function(x) eval(as.name(x))))
  x   y
1 1 2.0
2 2 3.0
3 2 4.0
4 3 6.0
5 0 1.0
6 1 1.5

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-1-11 12:11:31
rbind
cbind
data.frame
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-1-11 16:44:30
谢谢大家的答复,最后我用下面的命令完成了任务,就没有用for产生一个个data.frame了,直接用lapply,然后do.call
setwd("D:\\DData\\Else\\Disease\\Input_time\\new_format\\address")
filenames<-list.files()
allframes = lapply(filenames,function(x) read.csv(x,header=TRUE))
ddata = do.call(rbind,allframes)


和ntsean的基本一致

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群