Re: [問題] 重複的計算寫入迴圈

看板R_Language作者 (天)時間8年前 (2017/04/08 01:36), 8年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #1OvyuejC (R_Language)
文章代碼(AID): #1OvyuejC (R_Language)