All combinations of all sizes?

前端 未结 2 1176
北海茫月
北海茫月 2020-12-19 23:14

There are thousands of results on SO when I search for \"vector combinations in R\" but I can\'t find the answer to my question. Apologies if it is a duplicate:

I ha

2条回答
  •  梦毁少年i
    2020-12-20 00:09

    Perhaps combn in conjunction with lapply might be helpful:

    x <- 1:4
    lapply(seq_along(x), function(y) combn(x, y))
    # [[1]]
    #      [,1] [,2] [,3] [,4]
    # [1,]    1    2    3    4
    # 
    # [[2]]
    #      [,1] [,2] [,3] [,4] [,5] [,6]
    # [1,]    1    1    1    2    2    3
    # [2,]    2    3    4    3    4    4
    # 
    # [[3]]
    #      [,1] [,2] [,3] [,4]
    # [1,]    1    1    1    2
    # [2,]    2    2    3    3
    # [3,]    3    4    4    4
    # 
    # [[4]]
    #      [,1]
    # [1,]    1
    # [2,]    2
    # [3,]    3
    # [4,]    4
    

    As @Roland points out, there is also a simplify argument to combn that when set to FALSE would create a nested list of individual column vectors rather than a matrix of all the results. For example, instead of list item [[3]] above being presented as a matrix, if you used lapply(seq_along(x), function(y) combn(x, y)), for the combinations of length 3 you would get:

    # [[3]]
    # [[3]][[1]]
    # [1] 1 2 3
    # 
    # [[3]][[2]]
    # [1] 1 2 4
    # 
    # [[3]][[3]]
    # [1] 1 3 4
    # 
    # [[3]][[4]]
    # [1] 2 3 4
    

提交回复
热议问题