您好,感谢您的期待。我不确定如何提出这个问题 - 让我向您展示一个例子,以及我希望返回的内容。
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还是新手!
答案 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次。