我有一个二进制字符串的 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=""))

如果您仍然想使用该功能,那本来可以工作的。

07-25 20:29