我如何找到所有 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.
您好,感谢您的关注。我不太确定如何问这个问题 - 让我给你看一个例子以及我希望 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.