我们有什么数据类型选择来处理R中的大数?默认情况下,整数的大小似乎是32位,因此来自sql server的bigint数字以及从python通过rpy2传递的任何大数字都会被破坏.
> 123456789123
[1] 123456789123
> 1234567891234
[1] 1.234568e+12
Run Code Online (Sandbox Code Playgroud)
当使用RODBC读取bigint值123456789123456789时,它返回为123456789123456784(参见最后一位数字),并且通过RJSONIO反序列化时的相同数字将返回-1395630315L(这似乎是RJSONIO的附加错误/限制).
> fromJSON('[1234567891]')
[1] 1234567891
> fromJSON('[12345678912]')
[1] -539222976
Run Code Online (Sandbox Code Playgroud)
其实,我需要能够处理大量来自JSON的到来,所以用RJSONIO的限制,我可能不会有一个解决办法,除了找到更好的JSON库(这似乎是一个非选项现在).我想听听专家们对此以及一般情况的看法.
当我factorial(100)在控制台中运行时,我得到
factorial(100)
# [1] 9.332622e+157
Run Code Online (Sandbox Code Playgroud)
但我想查看factorial(100). 我该怎么做?
我在基于UNIX的系统上运行R脚本,该脚本包含大数字的乘法,因此NAs按整数溢出的结果,但是当我在Windows上运行相同的脚本时,不会出现此问题.
但我应该让脚本整夜在桌面上运行(这是Unix).
这个问题有什么解决方案吗?
谢谢
for(ol in seq(1,nrow(yi),by=25))
{
for(oh in seq(1,nrow(yi),by=25))
{
A=(N*(ol^2)) + ((N*(N+1)*(2*N+1))/6) -(2*ol*((N*N+1)/2)) + (2*N*ol*(N-oh+1)) + ((N-oh+1)*N^2) + (2*N*(oh-N-1)*(oh+N))
}
}
with :
N=16569 = nrow(yi)
Run Code Online (Sandbox Code Playgroud)
但第一轮没有在unix上计算.
我正在尝试拆分40位数字的字符串(即拆分123456789123456789123456789成1 2 3 4等)
遗憾的是strsplit它不起作用,因为它需要字符,并且使用转换字符串as.character不起作用,因为它非常长并且R自动切断长数字的小数(最大值为22位小数).因此,我最终得到"1.2345e+35"一个字符串,而不是完整的数字.
是否存在strsplit十进制截止问题的数字变体或解决方法?我似乎无法在stackoverflow上找到答案,但如果之前已经回答过,请道歉.提前致谢!
我有以下问题:
> 1e20 %% 3
[1] 0
Warning message:
probable complete loss of accuracy in modulus
Run Code Online (Sandbox Code Playgroud)
结果不可能是正确的,我确定这是因为1e20它真的很大。但我想在R. 有机会提出这个吗?
编辑:我想做以下挑战:https : //www.codeabbey.com/index/task_view/modular-calculator
这是我的代码:
library(tidyverse)
library(magrittr)
get_result <- function(.string){
terms <- .string %>%
str_split("\n") %>%
unlist %>%
str_replace("%", "%%") %>%
str_squish
terms[1] %<>%
str_c("x <<- ", .)
terms[2:length(terms)] %<>%
str_c("x <<- x ", .)
map(terms, ~ {
eval(parse(text = .x))
})
x
}
get_result("6
+ 12
* 99
+ 5224
* 53
* 2608
* 4920
+ …Run Code Online (Sandbox Code Playgroud)