0

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

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

1)我将如何调整 combn() 只给我包括数字 1 的组合?此外,我不想让三个或更多数字的序列连续排列。IE:(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 来说还是很新的!

4

1 回答 1

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。

于 2018-05-05T00:47:16.703 回答