Search code examples
rbinaryintegernumericbinary-data

How to convert integer number into binary vector?


How to convert an integer number into binary vector using R?

For example :

number <- 11
[1] 1 0 1 1

what is the fastest possible method of conversion (using R code or some existing functions from packages) if I need to convert whole vector of numbers (minimum value = 0, maximum =300) into binary matrix ?

Follow the rabbit : base::intToBits


Solution

  • There's the intToBits function that converts any integer to a vector of 32 raws, so you can do this:

    decimals <- c(3,5,11,4)
    m <- sapply(decimals,function(x){ as.integer(intToBits(x))})
    m
    
    > m
          [,1] [,2] [,3] [,4]
     [1,]    1    1    1    0
     [2,]    1    0    1    0
     [3,]    0    1    0    1
     [4,]    0    0    1    0
     [5,]    0    0    0    0
     [6,]    0    0    0    0
     [7,]    0    0    0    0
     [8,]    0    0    0    0
     [9,]    0    0    0    0
    [10,]    0    0    0    0
    [11,]    0    0    0    0
    [12,]    0    0    0    0
    [13,]    0    0    0    0
    [14,]    0    0    0    0
    [15,]    0    0    0    0
    [16,]    0    0    0    0
    [17,]    0    0    0    0
    [18,]    0    0    0    0
    [19,]    0    0    0    0
    [20,]    0    0    0    0
    [21,]    0    0    0    0
    [22,]    0    0    0    0
    [23,]    0    0    0    0
    [24,]    0    0    0    0
    [25,]    0    0    0    0
    [26,]    0    0    0    0
    [27,]    0    0    0    0
    [28,]    0    0    0    0
    [29,]    0    0    0    0
    [30,]    0    0    0    0
    [31,]    0    0    0    0
    [32,]    0    0    0    0