我如何找到所有 combinations/permutations 与 R 中的顺序有关?

How would I find all combinations/permutations with order mattering in R?

您好,感谢您的关注。我不太确定如何问这个问题 - 让我给你看一个例子以及我希望 return.

example <- c(1, 2, 3, 4, 5, 6)
example_combos <- combn(example, 4) 

1) 我将如何调整 combn() 以仅提供包括数字 1 在内的组合?此外,我不想让三个或更多数字的序列连续出现。 即:(1,2,4,5), (1,2,4,6), (1,2,5,6), (1,3,4,5), (1,3,4,6), (1,3,5,6)

2) 或者,我实际上如何让顺序变得重要 - 意思是 (1,2,4,5) 不同于 (2,4,5,1)。在这种情况下,我怎么不允许连续出现 3 个或更多的序列 - 然后,我将如何对数据框进行子集化以仅包含以 1 开头的列?

谢谢! R 仍然很新!

这是答案(或者无论如何都是答案)。

example_combos[ , apply( example_combos, 2, function(col){ !any( rle(diff(col))$lengths >= 2 & rle(diff(col))$values==1)   })  ]
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    1    1    1    1    2
[2,]    2    2    2    3    3    3
[3,]    4    4    5    4    5    5
[4,]    5    6    6    6    6    6

这里有一个解释:

我正在计算 example_combos 矩阵的任何给定列中组合(已排序)的连续差分中出现 1 的 运行 的次数。如果它大于或等于 2,则意味着 运行 至少为 3.