在这个主题中,我试图在这里包括所有常见问题及其答案.我希望这对某人有用.
一般问题:如何r从n对象生成对象序列?
总共存在这类2^3=8问题.
[更新]
Josh O'Brien认为这8个问题与十二种方式有关.实际上,"不同"的问题以十二种方式包含在内,而"非独特"的问题则不包括在内.无论如何,将这里的8个问题与12倍的方式进行比较是很有趣的.请参阅注释以获取进一步的读数.
我有以下给出的矩阵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中有没有办法做到这一点?
谢谢!
我有一个包含五个项目的向量。
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”。
假设我有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)
应排除其中一个