作者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/cn.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