2084 3

[问答] for循环简化问题 [推广有奖]

  • 8关注
  • 1粉丝

博士生

78%

还不是VIP/贵宾

-

威望
0
论坛币
436 个
通用积分
0.0602
学术水平
5 点
热心指数
5 点
信用等级
0 点
经验
4549 点
帖子
164
精华
0
在线时间
407 小时
注册时间
2015-11-3
最后登录
2020-2-8

楼主
露露的家园2012 发表于 2018-7-2 18:10:54 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币



a_pick<-list()
b_pick<-list()
d_pick<-list()
for (s in 1:n) {
  a_pick[]<-assemble[][,c(3,5)]
  d_pick[]<-unique(a_pick[])
}

b_pick[[1]]<-merge(x=d_pick[[1]],y=d_pick[[2]],all=TRUE,by="createtime",sort = TRUE)

for (t in 2:147) {#累加合并
  b_pick[[t]]<-merge(b_pick[[t-1]],d_pick[[t+1]],all=TRUE,by="createtime",sort=TRUE)

}

Error: cannot allocate vector of size 820 Kb
In addition: There were 50 or more warnings (use warnings() to see the first 50)

> warnings()
警告信息:
1: In merge.data.frame(b_pick[[t - 1]], d_pick[[t + 1]],  ... :
  column names ‘value.x’, ‘value.y’ are duplicated in the result
2: In merge.data.frame(b_pick[[t - 1]], d_pick[[t + 1]],  ... :
  column names ‘value.x’, ‘value.y’ are duplicated in the result
3: In merge.data.frame(b_pick[[t - 1]], d_pick[[t + 1]],  ... :
  column names ‘value.x’, ‘value.y’, ‘value.x’, ‘value.y’ are duplicated in the result
4: In merge.data.frame(b_pick[[t - 1]], d_pick[[t + 1]],  ... :
  column names ‘value.x’, ‘value.y’, ‘value.x’, ‘value.y’ are duplicated in the result
5: In merge.data.frame(b_pick[[t - 1]], d_pick[[t + 1]],  ... :
  column names ‘value.x’, ‘value.y’, ‘value.x’, ‘value.y’, ‘value.x’, ‘value.y’ are duplicated in the result
6: In merge.data.frame(b_pick[[t - 1]], d_pick[[t + 1]],  ... :
  column names ‘value.x’, ‘value.y’, ‘value.x’, ‘value.y’, ‘value.x’, ‘value.y’ are duplicated in the result

我想简化一下,我这个for循环,或者最好不要使用for循环。
简单说一下,上面的代码是干什么:简单的说就是合并累加。有assemble是一个list,有148个元素。合并过程就是通过list[[1]]与list[[2]]中的列“createtime”名进行outer合并,得到b_pick[[1]],然后b_pick[[1]]与list[[3]]中根据“createtime”列名进行合并,依次类推,直到b_pick[[146]]与list[[148]]中根据“createtime”列进行合并,然后提取最后得到的这个结果。



二维码

扫码加我 拉你入群

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

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

关键词:for循环 For Pick

沙发
露露的家园2012 发表于 2018-7-2 18:12:02
怎么会变成这样?好奇怪,但是不影响阅读,拜托各位了

藤椅
jgchen1966 发表于 2018-7-2 18:33:55
第一个for 用 map
第二个for 用purrr::reduce试试。。
merge  用dlyr::full_join 代替会更好些  
行不行,多试试才知,才知如何再量身制定。。
  
已有 2 人评分论坛币 学术水平 热心指数 收起 理由
逐梦的太阳 + 5 + 5 热心帮助其他会员
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10  学术水平 + 5  热心指数 + 5   查看全部评分

板凳
hifinecon 发表于 2018-7-2 19:53:14
thanks for sharing the code

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

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