R-列出所有带有combn的组合(多个m值) [英] R - List All Combinations With combn (Multiple m Values)

查看:225
本文介绍了R-列出所有带有combn的组合(多个m值)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想构建一个列出所有可能的6个数字组合的数据框。

I would like to build a dataframe that lists all possible combinations of 6 numbers.

我意识到我可以使用combn(),但只使用一个值米经过一番尝试之后,我逐步使用以下代码获得了理想的结果-

I realised that I can use combn(), but with only one value for m. With a bit of playing around I got the desired result by going through step-by-step with the following code -

combi1 <- data.frame(c(1:6))
colnames(combi1) <- 'X1'

combi2 <- data.frame(t(combn(c(1:6), 2)))
combi3 <- data.frame(t(combn(c(1:6), 3)))
combi4 <- data.frame(t(combn(c(1:6), 4)))
combi5 <- data.frame(t(combn(c(1:6), 5)))
combi6 <- data.frame(t(combn(c(1:6), 6)))

Combi <- rbind.fill(combi1, combi2, combi3, combi4, combi5, combi6)

我必须换位每个DF才能使其形状正确。

I had to transpose each of the DFs to get them in the right shape.

我的问题是,这似乎是一种效率低下的方法。也许有点简单。我以为肯定有某种更快的方法来编写此代码,但是还没有找到任何在线解决方案能够满足我的需求。

My problem is that this seems to be quite an in-efficient method. Maybe a bit simplistic. I thought there must surely be some quicker way to code this, but haven't found any solution online that gives me what I'd like.

可能将其构建为一个功能还是某种方式的循环?我对R还是相当陌生,还没有进行太多的函数编写练习。

Possibly build it into a function or a loop somehow? I'm fairly new to R though and haven't had a great deal of practice writing functions.

推荐答案

这就是您所需要的吗想要?

Is it what you want ?

combis <- vector("list", 6)
combi1 <- data.frame(c(1:6))
colnames(combi1) <- 'X1'
combis[[1]] <- combi1
combis[2:6] <- lapply(2:6, function(n) data.frame(t(combn(c(1:6), n))))

do.call(plyr::rbind.fill, combis)

结果:

   X1 X2 X3 X4 X5 X6
1   1 NA NA NA NA NA
2   2 NA NA NA NA NA
3   3 NA NA NA NA NA
4   4 NA NA NA NA NA
5   5 NA NA NA NA NA
6   6 NA NA NA NA NA
7   1  2 NA NA NA NA
8   1  3 NA NA NA NA
9   1  4 NA NA NA NA
10  1  5 NA NA NA NA
11  1  6 NA NA NA NA
12  2  3 NA NA NA NA
13  2  4 NA NA NA NA
14  2  5 NA NA NA NA
15  2  6 NA NA NA NA
16  3  4 NA NA NA NA
17  3  5 NA NA NA NA
18  3  6 NA NA NA NA
19  4  5 NA NA NA NA
20  4  6 NA NA NA NA
21  5  6 NA NA NA NA
22  1  2  3 NA NA NA
23  1  2  4 NA NA NA
24  1  2  5 NA NA NA
25  1  2  6 NA NA NA
26  1  3  4 NA NA NA
27  1  3  5 NA NA NA
28  1  3  6 NA NA NA
29  1  4  5 NA NA NA
30  1  4  6 NA NA NA
31  1  5  6 NA NA NA
32  2  3  4 NA NA NA
33  2  3  5 NA NA NA
34  2  3  6 NA NA NA
35  2  4  5 NA NA NA
36  2  4  6 NA NA NA
37  2  5  6 NA NA NA
38  3  4  5 NA NA NA
39  3  4  6 NA NA NA
40  3  5  6 NA NA NA
41  4  5  6 NA NA NA
42  1  2  3  4 NA NA
43  1  2  3  5 NA NA
44  1  2  3  6 NA NA
45  1  2  4  5 NA NA
46  1  2  4  6 NA NA
47  1  2  5  6 NA NA
48  1  3  4  5 NA NA
49  1  3  4  6 NA NA
50  1  3  5  6 NA NA
51  1  4  5  6 NA NA
52  2  3  4  5 NA NA
53  2  3  4  6 NA NA
54  2  3  5  6 NA NA
55  2  4  5  6 NA NA
56  3  4  5  6 NA NA
57  1  2  3  4  5 NA
58  1  2  3  4  6 NA
59  1  2  3  5  6 NA
60  1  2  4  5  6 NA
61  1  3  4  5  6 NA
62  2  3  4  5  6 NA
63  1  2  3  4  5  6

这篇关于R-列出所有带有combn的组合(多个m值)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆