【问题标题】:R:Binary matrix for all possible unique resultsR:所有可能的唯一结果的二进制矩阵
【发布时间】:2013-06-25 07:59:26
【问题描述】:

如何生成所有可能的二进制矩阵 'i' 变量 X 的排列,其中“i”可以是任何 介于 1 和无限之间的数字。结果矩阵将有 2^i 个唯一行。

对于 i=2 ,变量 x1, x2 每个都有可能的值 1 或 0, 所以得到的矩阵是:

X1 X2
0 0
0 1
1 0
1 1

R中有什么函数可以生成吗?

我尝试了以下功能:

   matrix(rbinom(160, 1, 0.5),ncol=5,nrow=(2^5))

但结果并未显示所有可能的值。

【问题讨论】:

    标签: r matrix binary binary-matrix


    【解决方案1】:

    你可以使用expand.grid:

     expand.grid(c(0,1),c(0,1))
      Var1 Var2
    1    0    0
    2    1    0
    3    0    1
    4    1    1
    

    更一般地,以 5 列为例,给出m

    m <- as.data.frame(matrix(rbinom(5*2, 1, 0.5),ncol=5))
     V1 V2 V3 V4 V5
    1  0  1  1  0  0
    2  0  1  1  0  0
    
    dim(expand.grid(m))
    32 5
    

    【讨论】:

      【解决方案2】:

      包 hier.part 的功能组合将完成我认为的工作。

      require(hier.part)
      combos(2)$binary
           [,1] [,2]
      [1,]    1    0
      [2,]    0    1
      [3,]    1    1
      
      combos(3)$binary
           [,1] [,2] [,3]
      [1,]    1    0    0
      [2,]    0    1    0
      [3,]    0    0    1
      [4,]    1    1    0
      [5,]    1    0    1
      [6,]    0    1    1
      [7,]    1    1    1
      

      除非您必须添加“null”组合。 高温

      【讨论】:

        【解决方案3】:

        试试这个

        i =2
        install.packages('gtools')
        library(gtools)
        permutations(2,i,v=c(0,1),repeats.allowed=TRUE)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-23
          • 1970-01-01
          • 2020-10-22
          • 2020-08-31
          相关资源
          最近更新 更多