我有一个二进制字符串的 vector :
a<-c(0,0,0,1,0,1)
我想将此 vector 转换为十进制。
我尝试使用
compositions
包和unbinary()
函数,但是,此解决方案以及在此站点上发现的大多数其他解决方案都需要使用g-adic字符串作为输入参数。我的问题是如何将 vector 而不是字符串转换为十进制?
说明问题:
library(compositions)
unbinary("000101")
[1] 5
这给出了正确的解决方案,但是:
unbinary(a)
unbinary("a")
unbinary(toString(a))
产生NA。
最佳答案
您可以尝试此功能
bitsToInt<-function(x) {
packBits(rev(c(rep(FALSE, 32-length(x)%%32), as.logical(x))), "integer")
}
a <- c(0,0,0,1,0,1)
bitsToInt(a)
# [1] 5
这里我们跳过字符转换。这仅使用
base
函数。可能就是这样
unbinary(paste(a, collapse=""))
如果您仍然想使用该功能,那本来可以工作的。