【问题标题】:How to generate a matrix of combinations如何生成组合矩阵
【发布时间】:2011-04-28 22:58:12
【问题描述】:

我有 5 个项目,每个项目的值可以是 1 或 -1。我想生成一个由可能组合的行组成的矩阵。项目的顺序无关紧要,组合的顺序无关紧要。我知道我可以机械地做到这一点,但我认为有人必须知道生成这个矩阵的捷径。如果这与其他问题相似,我深表歉意,但我发现的任何解决方案都不能以我的编程技能应用于这个特定问题。

【问题讨论】:

    标签: r cross-join


    【解决方案1】:
    expand.grid(c(-1,1), c(-1,1), c(-1,1), c(-1,1), c(-1,1))
    

    【讨论】:

      【解决方案2】:

      概括格雷格的答案:

      N   <- 5
      vec <- c(-1, 1)
      lst <- lapply(numeric(N), function(x) vec)
      as.matrix(expand.grid(lst))
      

      【讨论】:

        【解决方案3】:

        data.table 包的替代方案比expand.grid 稍快:

        library(data.table)  
        CJ(c(-1,1), c(-1,1), c(-1,1), c(-1,1), c(-1,1))
        

        【讨论】:

        • 我认为更通用的解决方案是do.call(CJ, rep(list(c(-1, 1)), 5))
        猜你喜欢
        • 1970-01-01
        • 2011-06-20
        • 1970-01-01
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        • 2013-11-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多