Re: [問題] 重複的計算寫入迴圈
※ 引述《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://www.ptt.cc/bbs/R_Language/M.1491586600.A.B4C.html
※ 編輯: celestialgod (36.233.51.237), 04/08/2017 01:48:58
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章