假设,我有一个长度为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)
有人可以建议一个简单的解决方案吗?谢谢
我稍微概括了一下这个案例:
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参数,但我们也可以用递归函数来完成它.