为了账号安全,请及时绑定邮箱和手机立即绑定

如何将整数转换为二进制向量?

如何将整数转换为二进制向量?

慕哥9229398 2019-12-03 16:29:39
如何使用R将整数转换为二进制向量?例如 :number <- 11[1] 1 0 1 1如果我需要将整个数字向量(最小值= 0,最大值= 300)转换为二进制矩阵,最快的转换方法(使用R代码或软件包中的某些现有功能)是什么?r 二进制 整数 数字 二进制数据
查看完整描述

3 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

我在MJ Crawley的“ The R Book”中找到的解决方案是以下功能:


binary <- function(x) {

  i <- 0

  string <- numeric(32)

  while(x > 0) {

    string[32 - i] <- x %% 2

    x <- x %/% 2

    i <- i + 1 

  }

  first <- match(1, string)

  string[first:32] 


查看完整回答
反对 回复 2019-12-03
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

该intToBits函数可以将任何整数转换为32个raws的向量,因此您可以执行以下操作:


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


查看完整回答
反对 回复 2019-12-03
?
慕村225694

TA贡献1880条经验 获得超4个赞

该SO帖子建议该intToBits功能。我定义函数number2binary,该函数包含一个参数noBits来控制返回多少位。标准是返回32位。


number2binary = function(number, noBits) {

       binary_vector = rev(as.numeric(intToBits(number)))

       if(missing(noBits)) {

          return(binary_vector)

       } else {

          binary_vector[-(1:(length(binary_vector) - noBits))]

       }

    }

还有一些例子:


> number2binary(11)

 [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1

> number2binary(11, 4)

[1] 1 0 1 1


查看完整回答
反对 回复 2019-12-03
  • 3 回答
  • 0 关注
  • 910 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信