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

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


例如 :


number <- 11

[1] 1 0 1 1

如果我需要将整个数字向量(最小值= 0,最大值= 300)转换为二进制矩阵,最快的转换方法(使用R代码或软件包中的某些现有功能)是什么?


r 二进制 整数 数字 二进制数据


慕哥9229398
浏览 919回答 3
3回答

偶然的你

我在MJ Crawley的“ The R Book”中找到的解决方案是以下功能:binary <- function(x) {&nbsp; i <- 0&nbsp; string <- numeric(32)&nbsp; while(x > 0) {&nbsp; &nbsp; string[32 - i] <- x %% 2&nbsp; &nbsp; x <- x %/% 2&nbsp; &nbsp; i <- i + 1&nbsp;&nbsp; }&nbsp; first <- match(1, string)&nbsp; string[first:32]&nbsp;

Cats萌萌

该intToBits函数可以将任何整数转换为32个raws的向量,因此您可以执行以下操作:decimals <- c(3,5,11,4)m <- sapply(decimals,function(x){ as.integer(intToBits(x))})m> m&nbsp; &nbsp; &nbsp; [,1] [,2] [,3] [,4]&nbsp;[1,]&nbsp; &nbsp; 1&nbsp; &nbsp; 1&nbsp; &nbsp; 1&nbsp; &nbsp; 0&nbsp;[2,]&nbsp; &nbsp; 1&nbsp; &nbsp; 0&nbsp; &nbsp; 1&nbsp; &nbsp; 0&nbsp;[3,]&nbsp; &nbsp; 0&nbsp; &nbsp; 1&nbsp; &nbsp; 0&nbsp; &nbsp; 1&nbsp;[4,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 1&nbsp; &nbsp; 0&nbsp;[5,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp;[6,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp;[7,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp;[8,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp;[9,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0[10,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0[11,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0[12,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0[13,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0[14,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0[15,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0[16,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0[17,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0[18,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0[19,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0[20,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0[21,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0[22,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0[23,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0[24,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0[25,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0[26,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0[27,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0[28,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0[29,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0[30,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0[31,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0[32,]&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0&nbsp; &nbsp; 0

慕村225694

该SO帖子建议该intToBits功能。我定义函数number2binary,该函数包含一个参数noBits来控制返回多少位。标准是返回32位。number2binary = function(number, noBits) {&nbsp; &nbsp; &nbsp; &nbsp;binary_vector = rev(as.numeric(intToBits(number)))&nbsp; &nbsp; &nbsp; &nbsp;if(missing(noBits)) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return(binary_vector)&nbsp; &nbsp; &nbsp; &nbsp;} else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; binary_vector[-(1:(length(binary_vector) - noBits))]&nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; }还有一些例子:> number2binary(11)&nbsp;[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
打开App,查看更多内容
随时随地看视频慕课网APP