作者getsimple (getsimple)
看板R_Language
標題[問題] combn取法(一定要包含1)
時間Fri Oct 16 02:22:24 2020
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
新手(沒寫過程式,R 是我的第一次)
[問題敘述]:
我目前想要取data的columns
然後做所有的組合
但一定都要包含第一個column
目前code如下:
N <- 5
Model = list()
C <- 1
for(i in 1:N){
i_Combn <- combn(N, i)
for(j in 1:choose(N, i)){
Model[[C]] <- i_Combn[, j]
C <- C + 1
}
}
Model
結果為:
https://i.imgur.com/X8VspIL.jpg
但我今天想要的結果一定要包含1
也就是我想要得到的結果是:
1
1 2
1 3
1 4
1 5
1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
1 4 5
1 2 3 4
1 2 3 5
1 2 4 5
1 3 4 5
1 2 3 4 5
想了很久都弄不出來
拜託大家幫幫我
非常感謝
[關鍵字]:
Combn、排列組合
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.52.38.63 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/R_Language/M.1602786146.A.F1D.html
1F:→ Gjerry: 你可以想像每一個位置有 True 和 False 兩種可能 10/16 02:35
2F:→ Gjerry: 1 可以看成 T F F F F,1, 2 可以看成 T T F F F 10/16 02:37
3F:→ Gjerry: 問題就變成如何產生所以的 T/F 組合,可以以此試試看 10/16 02:38
5F:→ andrew43: 硬上就是在內層for中再包一個if (1 %in% i_Combn[, j]) 10/16 10:25
6F:→ khaos: 為什麼不把1以外的column做完全組合後,再跟1 column結合? 10/16 11:32
7F:推 rebe212296: 用expand.grid即可 10/16 12:55
8F:→ getsimple: G大,這個我有用過,但我底下要做迭代運算,如果用取 10/16 13:20
9F:→ getsimple: 資料的方式,會更方便~謝謝你提供的想法 10/16 13:20
10F:→ getsimple: l大,感謝你!!我想要的就是這樣~ 10/16 13:20
11F:→ getsimple: a大跟r大,我再試試看,感恩~ 10/16 13:21
12F:→ getsimple: k大,因為這樣會有重複,譬如說1 3 5如果跟1結合,會 10/16 13:23
13F:→ getsimple: 變成 1 1 3 5,但我只要1 3 5 10/16 13:23
15F:推 locka: 1r.jpeg 10/16 15:30
17F:→ locka: 再把1黏到每個元素的第一個阿捏,不過list裡面的matrix我不 10/16 15:33
18F:→ locka: 是很會處理這種結構(苦手),希望其他高手可以補充>"< 10/16 15:33
19F:→ getsimple: 了解,感謝教學,其實我也不太會處理這種哈哈,遇到我 10/16 17:09
20F:→ getsimple: 都寫迴圈...不過就會變成一堆迴圈,因為我目前就是這 10/16 17:09
21F:→ getsimple: 樣...做這個組合的目的只是要取list裡面的data,我的 10/16 17:09
22F:→ getsimple: 用途是取位置用的,但變成要用for去取data裡頭的x(因 10/16 17:09
23F:→ getsimple: 為資料型態是list) 10/16 17:09
24F:推 andrew43: loop沒什麼不好,頂多比較難看。你可以額外練習記憶體 10/16 19:08
25F:→ andrew43: 預分配的技巧。 10/16 19:08
27F:→ getsimple: a大,謝謝,馬上來看看 10/16 22:41
28F:推 rebe212296: combn(5,1);combn(5,2);combn(5,3);combn(5,4);然後 10/16 22:52
29F:→ rebe212296: 取裡面有1的 10/16 22:52
30F:→ getsimple: r大,了解,謝謝~ 10/17 17:56
31F:→ khaos: 是不是可以順便再搭配apply? 10/17 20:56
32F:推 TOOYA: 跑一個迴圈,把沒有1的丟掉,會不會比較簡單? 10/23 19:09