楼主: cr7madrid
14282 14

[问答] R中 如何合并100个数据框 [推广有奖]

  • 1关注
  • 3粉丝

本科生

23%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
465 点
帖子
38
精华
0
在线时间
95 小时
注册时间
2012-4-11
最后登录
2018-12-11

楼主
cr7madrid 发表于 2013-12-21 18:27:53 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
如题,cbind怎么加入循环?急求!!!!
二维码

扫码加我 拉你入群

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

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

关键词:数据框 bind CBI bin IND 如何

本帖被以下文库推荐

沙发
远飞SOA 发表于 2013-12-21 18:42:13
直接cbind(x1 x2 x3.....x100)不行???

藤椅
cr7madrid 发表于 2013-12-21 19:15:53
远飞SOA 发表于 2013-12-21 18:42
直接cbind(x1 x2 x3.....x100)不行???
我的意思是更多的话要一个一个的输入吗?如果是1000个呢

板凳
远飞SOA 发表于 2013-12-21 21:09:18
何不换个思路,弄个空矩阵去赋值替换呢。。

报纸
远飞SOA 发表于 2013-12-21 21:09:55
cr7madrid 发表于 2013-12-21 19:15
我的意思是更多的话要一个一个的输入吗?如果是1000个呢
何不换个思路,弄个空矩阵去赋值替换呢。。

地板
cr7madrid 发表于 2013-12-21 22:33:19
远飞SOA 发表于 2013-12-21 21:09
何不换个思路,弄个空矩阵去赋值替换呢。。
想过替换空矩阵,但我写的for循环总错,能给我简单的例子参考下吗?

7
jmpamao 发表于 2013-12-21 23:06:56
应该可以符合你的要求了忘了提醒,生成的外部数据 data_1.csv,data_2.csv....data_100.csv, 在R目录下,不要出现其他文件重名,否则覆盖。覆盖了,,,不负责
  1. set.seed(100)
  2. data<- data.frame(x=sample(1:10000,10000,replace=T),y=sample(1:10000,10000,replace=T))
  3. #data分为100份:对象为data_1, data_2,,,,,data_100
  4. #如果外部文件夹数据的话,先模拟生成外部数据
  5. for(i in 1:100){
  6.   ind_1= (i-1)*100+1
  7.   ind_2= i*100
  8. assign(paste("data",i,sep="_"),data[ind_1:ind_2,])
  9. write.csv(x=assign(paste("data",i,sep="_"),data[ind_1:ind_2,]),file=paste("data_",i,".csv",sep=""),row.names=F)
  10. }
  11. #把外部data_1,data_2,,,data_100合并为dat1
  12. dir <- paste("data_",1:100,".csv",sep="")
  13. dat1=do.call(cbind,lapply(dir,read.csv))


  14. #如果是内部的数据,data分为100份:对象为data_1, data_2,,,,,data_100
  15. for(i in 1:100){
  16.   ind_1= (i-1)*100+1
  17.   ind_2= i*100
  18.   assign(paste("data",i,sep="_"),data[ind_1:ind_2,])
  19. }

  20. #存在data_1,data_2,,,,,data_100的对象于内存中
  21. #ls()查看,get(the objects'name)  合并dat2
  22. do.call(cbind,lapply(paste("data",1:100,sep="_"),get))
复制代码



已有 2 人评分经验 学术水平 热心指数 信用等级 收起 理由
ReneeBK + 20 + 5 + 5 精彩帖子
ywh19860616 + 1 + 1 + 1 精彩帖子,命令用的很熟悉

总评分: 经验 + 20  学术水平 + 6  热心指数 + 6  信用等级 + 1   查看全部评分

8
ntsean 发表于 2013-12-21 23:36:10
用do.call

先把所有数据并到一个list
data <- lapply(paste0("x", 1:100), function(x) eval(as.name(x)))

do.call("cbind", data)

9
selfswim 在职认证  发表于 2013-12-22 09:50:04
很不错呀啊,赞一个额!

10
cr7madrid 发表于 2013-12-22 10:39:42
jmpamao 发表于 2013-12-21 23:06
应该可以符合你的要求了
太感谢了!!!!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 02:31