如何在R中找到与订单有关的所有组合/排列?

时间:2018-05-05 00:24:20

标签: r combn

您好,感谢您的期待。我不确定如何提出这个问题 - 让我向您展示一个例子,以及我希望返回的内容。

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还是新手!

1 个答案:

答案 0 :(得分:1)

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

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次。