R 十进制到四进制(基数4)的转换?

R 十进制到四进制(基数4)的转换?,r,R,是否有一个R程序可以将0到1之间的小数转换为以4为基数的(四进制)数?我试着在网上查找,但没有任何运气。谢谢。一个可能的解决方案是获取十进制数的字符串长度。例如,如果x=0.012,那么stru长度(as.character(x))-2=3。所以我们用x乘以10^3,然后我们应用通常的算法从一个基转换到另一个基。请参阅。Windows用户可以使用我的扩展包。要安装: devtools::find_rtools() devtools::install_github('stla/expansions

是否有一个R程序可以将0到1之间的小数转换为以4为基数的(四进制)数?我试着在网上查找,但没有任何运气。谢谢。

一个可能的解决方案是获取十进制数的字符串长度。例如,如果
x=0.012
,那么
stru长度(as.character(x))-2=3
。所以我们用
x
乘以
10^3
,然后我们应用通常的算法从一个基转换到另一个基。请参阅。

Windows用户可以使用我的
扩展包。要安装:

devtools::find_rtools()
devtools::install_github('stla/expansions', build_vignettes=TRUE)
或者从我的
drat
repo:

devtools::find_rtools()
drat::addRepo("stlarepo")
install.packages("expansions")
或者下载zip文件并安装它

您感兴趣的是
floatExpand01
函数(
floatExpand01(x,base=4)

一揽子计划的简要概述 十进制整数到整数基: 以整数为基数的浮点展开,数字介于0和1之间: 要了解更多信息:

当然可以,但是我们如何从“整数”版本中将表示返回到实际数字?这里我们只得到数字12的表示,而不是0.012,对吗?太好了!非常感谢。@user2167741您试过这个包裹了吗?你会是第一个。你安装好了吗?欢迎您的反馈。是的,我在我的备用windows机器上做了,它工作正常。然而,当我试图在OSX上编译它时(我通常工作),它失败了。这将是伟大的有这个在mac上。现在我必须在windows计算机中处理数据并传输它。@user2167741不错。它只在Windows上工作,因为它依赖于DLL。此外,此DLL是从Haskell创建的,Haskell仅为Windows生成独立的动态库。
n <- 14
(n_to_base3 <- intAtBase(n, base=3) )
## [1] 2 1 1
sum(n_to_base3*c(1,3,3^2)) == n
## [1] TRUE
# Cartesian product {0,1}x{0,1,2}x{0,1}:
sapply(0:11, function(x) intToAry(x, sizes=c(2,3,2)))
##      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
## [1,]    0    1    0    1    0    1    0    1    0     1     0     1
## [2,]    0    0    1    1    2    2    0    0    1     1     2     2
## [3,]    0    0    0    0    0    0    1    1    1     1     1     1
x <- 0.625
( x_to_base2 <- floatExpand01(0.625, base=2) )
## [1] 1 0 1
sum(x_to_base2 / 2^(1:3)) == x
## [1] TRUE
x <- 1.125
( x_to_base2 <- floatExpand(1.125, base=2) )
## $digits
## [1] 1 0 0 1
## 
## $exponent
## [1] 1
sum(x_to_base2$digits / 2^(1:4)) * 2^x_to_base2$exponent == x
## [1] TRUE
sumadic(c(0,1,1), c(1,0,1), base=2)
## [1] 1 1 0 1