作者celestialgod (天)
看板R_Language
标题Re: [问题] 重复的计算写入回圈
时间Sat Apr 8 01:36:36 2017
※ 引述《hkopee123 (..)》之铭言:
: [问题叙述]:
: 我有二个数据要放在一起做分析
: 可是第一部份的计算要放在一起跑模型
: 第二部分则要个别分开做计算後
: 再合并一起跑另外一个模型
: 然後得到结果
: 但我不知道该如何写一个回圈
: 多次失败之後 目前只会写死的方法
: 就是如果我有二笔数据就写二个
: 三笔就延长到三个 五笔就写五次
: [程式范例]:
: 1. 一开始二个数据要放在一起做分析
: 指定名字
: http://imgur.com/a/TbVOq
: 2. 第一部份的计算要放在一起共同计算
: 这是计算之後分别拆开的样子 bsol_1 和 bsol_2
: 抓出来只是为了给第三步做个别计算(简单的加减法)
: http://imgur.com/a/gg5cQ
: 3. 第二步分别拆开数据後
: 个别要做计算
: 基本上回圈内容一样
: 只是我很笨不知道怎麽写在一起
: http://imgur.com/a/lYneN
: 4. 第四步也是回去第二步把需要的东西抓出来
: gsol_1 与 gsol_2分别抓出来给名字
: 如果有回圈就不用写二次
: http://imgur.com/a/peXTe
: 5.然後把东西再次合并一起做其他计算
: http://imgur.com/a/2YGtT
: 6. 新增等一下要计算的二栏
: 用来收计算的结果
: http://imgur.com/Al7lRia
: 7. 然後再次进入回圈做其他计算
: 我一样是写死
: 不知道要怎麽在这个回圈里加入我需要的回圈做计算
: http://imgur.com/a/rSuFo
: 8. 这步也还在上面第七步那回圈里面
: 先把算好的merge起来 (如果三个就不能简单的用merge)
: 然後把算好的gs_1 gs_2分配给第六步设定好的栏
: http://imgur.com/27CpYB0
: 结束。
: 有人可以帮忙吗?
: 我愿意提供报酬当作占用高手们时间的回馈。
: 因为如果有10笔数据 重复写死10次实在很ooxxx......
: 这边是完整的code和Rout输出
: 我也可以开teamviewer用讲得 比较快
: 基本上程式中只要名字是XXX_1 XXX_2的都是写死的部分
: https://goo.gl/59oiDC
: 谢谢
我只看得懂一小部分
我的理解是你不擅长用list这个资料架构导致你没法用比较简单的方式去做
例如:
我会这样写:
# 虚拟资料
sol <- data.frame(V1 = sample(1:2, 30, TRUE), V2 = sample(1:5, 30, TRUE),
V3 = rnorm(30), V4 = rnorm(30), V5 = rnorm(30))
# 每一个拆分的条件,像你bsol_1, bsol_2取的那些subset...
# 我只要更动这个list就可以设定我要跑几组subset了
dataCond <- list(expression(V1 == 2 & V2 == 1),
expression(V1 == 2 & V2 == 2),
expression(V1 == 2 & V2 == 3),
expression(V1 == 2 & V2 == 4),
expression(V1 == 2 & V2 == 5))
# 回圈去把每一个subset取出来
trainDataList <- lapply(dataCond, function(expr){
sol_subset <- sol[eval(expr, sol, parent.frame()), 3L:5L]
# then do whatever you want to
})
# 再把资料合并在一起
trainData <- do.call(rbind, trainDataList)
# 之後再跑你合并之後要跑的
上面是大概概念,我觉得你应该先去学list怎麽用才是正道...
至於怎麽学,请看置底,有很多教学
另外,回圈那哩,其实用一个function就可以处理
资料当成input,带进去function得到回传资料就好
所以你可能连function的概念都没有?!
--
R资料整理套件系列文:
magrittr #1LhSWhpH (R_Language) https://goo.gl/72l1m9
data.table #1LhW7Tvj (R_Language) https://goo.gl/PZa6Ue
dplyr(上.下) #1LhpJCfB,#1Lhw8b-s (R_Language) https://goo.gl/I5xX9b
tidyr #1Liqls1R (R_Language) https://goo.gl/i7yzAz
pipeR #1NXESRm5 (R_Language) https://goo.gl/zRUISx
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.233.51.237
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1491586600.A.B4C.html
※ 编辑: celestialgod (36.233.51.237), 04/08/2017 01:48:58