在R中将数字转换为基数2(在字符串中,例如将5转换为"0000000000000intToBits")的最简单方法是什么?有intToBits个,但它返回的是字符串向量,而不是字符串:

> intToBits(12)
 [1] 00 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[26] 00 00 00 00 00 00 00

我try 过其他一些功能,但没有成功:

> toString(intToBits(12))
[1] "00, 00, 01, 01, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00"

推荐答案

请注意,intToBits()返回的是"原始"向量,而不是字符向量(字符串).请注意,我的答案是@nico's original answer的略微扩展,从每个位中删除前导"0":

paste(sapply(strsplit(paste(rev(intToBits(12))),""),`[[`,2),collapse="")
[1] "00000000000000000000000000001100"

为了清晰起见,请分解步骤:

# bit pattern for the 32-bit integer '12'
x <- intToBits(12)
# reverse so smallest bit is first (little endian)
x <- rev(x)
# convert to character
x <- as.character(x)
# Extract only the second element (remove leading "0" from each bit)
x <- sapply(strsplit(x, "", fixed = TRUE), `[`, 2)
# Concatenate all bits into one string
x <- paste(x, collapse = "")
x
# [1] "00000000000000000000000000001100"

或者,作为@nico showed,我们可以使用as.integer()作为一种更简洁的方法来删除每个位的前导零.

x <- rev(intToBits(12))
x <- paste(as.integer(x), collapse = "")
# [1] "00000000000000000000000000001100"

为了方便复制粘贴,以下是上述功能的一个版本:

dec2bin <- function(x) paste(as.integer(rev(intToBits(x))), collapse = "")

R相关问答推荐

按自定义数字模式对变量名称排序

按块将载体转换为矩阵-reshape

R中的枢轴/转置

列出用m n个值替换来绘制n个数字的所有方法(i.o.w.:R中大小为n的集合的所有划分为m个不同子集)

计算R中的威布尔分布的EDF

如何根据条件计算时差(天)

在使用ggroove后,将图例合并在gplot中

基于多列将值链接到NA

将非重复序列高效转换为长格式

如何通过Docker部署我的shiny 应用程序(多个文件)

筛选出以特定顺序患病的个体

自动变更列表

多个模拟序列间的一种预测回归关系

LOF中的插图短文字幕

基于数据集属性将科分配给物种

如何使用FormC使简单算术运算得到的数字是正确的?

按组和连续id计算日期差

R预测包如何处理ARIMA(Auto.arima函数)中的缺失值

如何获取R chromote中的当前URL?

R-如何在ggplot2中显示具有不同x轴值(日期)的多行?