将df $ col分成三组,在r中尽可能多的组合

use*_*773 3 split r

假设,我有一个长度为8的df $ col:

1
2
3
4
5
6
7
8  
Run Code Online (Sandbox Code Playgroud)

我想把这个col分成三个不同的部分,尽可能多的"可能性".像这样:

1  2  345678 

1 23456  78 

1 234567 8

123 45 678  

123456 7 8

so on... 
Run Code Online (Sandbox Code Playgroud)

有人可以建议一个简单的解决方案吗?谢谢

Moo*_*per 5

我稍微概括了一下这个案例:

vec <- letters[1:8]    
n <- 2
combn(length(vec)-1,n,function(x){
  for(i in rev(x)) vec <- append(vec," ",i)
  paste0(vec,collapse="")})
# [1] "a b cdefgh" "a bc defgh" "a bcd efgh" "a bcde fgh" "a bcdef gh" "a bcdefg h" "ab c defgh" "ab cd efgh" "ab cde fgh" "ab cdef gh"
# [11] "ab cdefg h" "abc d efgh" "abc de fgh" "abc def gh" "abc defg h" "abcd e fgh" "abcd ef gh" "abcd efg h" "abcde f gh" "abcde fg h"
# [21] "abcdef g h"
Run Code Online (Sandbox Code Playgroud)

我们的想法是你有7个可以切割的地方,所以我们使用combn在它们中进行采样.它提供了一个很好的矩阵,我们可以apply通过FUN参数combn形成我们的连接字符串.

我最后使用了一个很好的旧for循环来概括n参数,但我们也可以用递归函数来完成它.