相关疑难解决方法(0)

R:具有/不具有替换的排列和组合以及用于不同/非独特项目/多集的排列和组合

在这个主题中,我试图在这里包括所有常见问题及其答案.我希望这对某人有用.

一般问题:如何r从n对象生成对象序列?

  • 组合与排列.
  • 有替换和没有替换.
  • 不同的项目与非独特的项目(多重集合).

总共存在这类2^3=8问题.

[更新]

Josh O'Brien认为这8个问题与十二种方式有关.实际上,"不同"的问题以十二种方式包含在内,而"非独特"的问题则不包括在内.无论如何,将这里的8个问题与12倍的方式进行比较是很有趣的.请参阅注释以获取进一步的读数.

combinations r permutation multiset r-faq

21
推荐指数
2
解决办法
1万
查看次数

生成R中矩阵的所有排列

我有以下给出的矩阵M:

M <- matrix(1:6, nrow=2, byrow=TRUE)

1 2 3
4 5 6
Run Code Online (Sandbox Code Playgroud)

我希望将这个矩阵的所有可能排列生成一个列表。阅读了在R中生成列表的所有不同排列后,我尝试使用

library(combinat)
permn(M)
Run Code Online (Sandbox Code Playgroud)

但这给了我所有的排列,而不是我原来拥有的2 x 3矩阵。

所以我得到的是这样的

[[1]]
[1] 1 4 2 5 3 6

[[2]]
[1] 1 4 2 5 6 3

[[3]]
[1] 1 4 2 6 5 3
 ...
[[720]]
[1] 4 1 2 5 3 6
Run Code Online (Sandbox Code Playgroud)

但是我想要保持第一行和第二行彼此不同,因此它将是一个看起来更像以下内容的列表:

[[1]]
1 2 3
4 5 6

[[2]]
1 3 2
4 5 6

[[3]]
2 3 1
5 4 6
...
Run Code Online (Sandbox Code Playgroud)

直到获得M的所有可能组合。在R中有没有办法做到这一点?

谢谢!

r permutation

5
推荐指数
1
解决办法
1920
查看次数

洗牌向量 - sample() 的所有可能结果?

我有一个包含五个项目的向量。

my_vec <- c("a","b","a","c","d")
Run Code Online (Sandbox Code Playgroud)

如果我想将这些值重新排列成一个新的向量(shuffle),我可以使用 sample():

shuffled_vec <- sample(my_vec)
Run Code Online (Sandbox Code Playgroud)

简单 - 但 sample() 函数只给了我一种可能的洗牌。如果我想知道所有可能的洗牌组合怎么办?各种“combn”的功能似乎并没有帮助,expand.grid()给我的每一个可能的组合都与更换,当我需要它无需更换。执行此操作的最有效方法是什么?

请注意,在我的向量中,我有两次值“a”——因此,在返回的一组混洗向量中,它们都应该在集合中都有两次“a”。

r shuffle sampling

3
推荐指数
1
解决办法
3772
查看次数

列出6位数字中的所有3位数组合

假设我有6个数字:

a <- c(1,2,3,4,5,6)
Run Code Online (Sandbox Code Playgroud)

我想列出这6个数字的所有可能的3位数组合,包括重复.

期望的结果如下所示:

1 1 1
1 2 3
1 2 4
... 
Run Code Online (Sandbox Code Playgroud)

我不想包含具有相同3个数字但顺序不同的元素:

例如

1 2 3
3 2 1
Run Code Online (Sandbox Code Playgroud)

应排除其中一个

combinations r combinatorics

2
推荐指数
1
解决办法
4100
查看次数