我想在基数3中执行一些计算,并且需要在该基数中进行加法减法。 例如。 2 + 2在基数3中应该变为11我该如何在R中的基数n数字系统上执行数学运算?
4
A
回答
3
在包sfcmisc
中有一个名为digitsBase
的功能来进行这种转换。
library(sfcmisc)
digitsBase(2+2,base = 3)
# Class 'basedInt'(base = 3) [1:1]
# [,1]
# [1,] 1
# [2,] 1
3
您可以使用gmp
包
library(gmp)
as.character(x = as.bigz(2 + 2), b = 3)
#[1] "11"
或者写自己的功能。我修改从here
foo = function(dec_n, base){
BitsInLong = 64
Digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if (base < 2 | base > nchar(Digits)){
stop(paste("The base must be >= 2 and <= ", nchar(Digits)))
}
if (dec_n == 0){
return(0)
}
index = BitsInLong
currentNumber = abs(dec_n)
charArray = character(0)
while (currentNumber != 0){
remainder = as.integer(currentNumber %% base)
charArray = c(charArray, substr(Digits, remainder + 1, remainder + 1))
currentNumber = currentNumber/base
}
charArray = inverse.rle(with(rle(rev(charArray)), list(values = if(values[1] == "0"){values[-1]}else{values},
lengths = if(values[1] == "0"){lengths[-1]}else{lenghts})))
result = paste(charArray, collapse = "")
if (dec_n < 0){
result = paste("-", result)
}
return(result)
}
使用一个
foo(dec_n = 2+2, base = 3)
#[1] "11"
0
如果你想了许多从一个基站转换成其他的你可以创建以下function.Here可以将数量从碱转化2到36到基数2到36:
baseconverter <- function(number,baseGiven,baseRequire){
result = c()
if(baseRequire >36 || baseRequire<2 || baseGiven>36 || baseGiven<2){
return ("CustomError:Base is not proper")
}
Letters = LETTERS[seq(from = 1, to = 26)]
numbers = 0:9
L = c(numbers,Letters)
rm(numbers)
rm(Letters)
number = substring(number,1:nchar(number),1:nchar(number))
convertToAlpha <- function(a) {
return(L[a+1])
}
alphaToDecimal <- function(a){
k = match(x = a , table = L)
return(k-1)
}
tempNum = 0
for (i in rev(number)){
digit = alphaToDecimal(i)
if(digit >= baseGiven || digit < 0){
return ("CustomError:Number is not proper")
}
tempNum = (tempNum*baseGiven) + digit
}
while(tempNum > baseRequire - 1){
result = c(convertToAlpha(tempNum - (baseRequire * floor(tempNum/baseRequire))),result)
tempNum = floor(tempNum/baseRequire)
}
result=c(tempNum,result)
return(paste(result,collapse = ""))
}
您可以使用以下函数将基数m中的数字转换为基数n :
baseconverter(number = 2+2 , baseGiven = 10 , baseRequire = 3)
希望它有帮助。
相关问题
- 1. 在Apache Commons数学系统中更改数字系统的基础数学
- 2. 我应该如何在C#中存储256位数字并在其上执行数学运算?
- 3. 如何执行数学运算?
- 4. 我想我的字符串中执行多个数学运算
- 5. 在Perl中对非常大的数字执行数学运算
- 6. 对字符串中的数字执行数学运算
- 7. 如何在我的字符串生成器中执行数学运算?
- 8. 如何在Python中的某些字段上执行数学运算?
- 9. 如何在多个SELECT结果上执行数学运算?
- 10. 如何使用jquery从字符串中执行数学运算
- 11. 在SQL中的多个SELECT结果上执行数学运算
- 12. 在氚中,我该如何做数学运算?
- 13. 允许对加密数字执行数学运算的加密?
- 14. 如何通过php和Mysql在Mysql中执行数学运算?
- 15. 我应该在PHP中执行数学运算吗,还是转换为JavaScript?
- 16. 如何在C#中的两列数据表中执行数学运算?
- 17. 使用文本字段在Xcode中执行数学运算?
- 18. 对属性值执行数学运算
- 19. 如何执行LINQ中的数学运算
- 20. 在选择结果行上执行数学运算
- 21. Python ioapiTools模块不能执行基本的数学运算
- 22. C中的基本数学运算#
- 23. Swift中的基础数学运算
- 24. 32位系统中整数和浮点数之间的数学运算
- 25. 如何在16位数字上执行按位运算(Arduino)
- 26. 在Unicode数字数学运算
- 27. BASH:如何对管道中的数字执行算术运算
- 28. 在T-SQL或运行时执行数学运算
- 29. 我该如何对Python中的列表元素进行数学运算?
- 30. 如何用单位类型的值执行数学运算?