相关疑难解决方法(0)

R中的long/bigint/decimal等效数据类型

我们有什么数据类型选择来处理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库(这似乎是一个非选项现在).我想听听专家们对此以及一般情况的看法.

types r

28
推荐指数
4
解决办法
2万
查看次数

如何获得阶乘(100)的确切值

当我factorial(100)在控制台中运行时,我得到

factorial(100)
# [1] 9.332622e+157
Run Code Online (Sandbox Code Playgroud)

但我想查看factorial(100). 我该怎么做?

r

5
推荐指数
1
解决办法
3720
查看次数

在linux上由整数溢出+ R生成的NA

我在基于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上计算.

r

4
推荐指数
2
解决办法
6200
查看次数

R:拆分数字字符串

我正在尝试拆分40位数字的字符串(即拆分1234567891234567891234567891 2 3 4等)

遗憾的是strsplit它不起作用,因为它需要字符,并且使用转换字符串as.character不起作用,因为它非常长并且R自动切断长数字的小数(最大值为22位小数).因此,我最终得到"1.2345e+35"一个字符串,而不是完整的数字.

是否存在strsplit十进制截止问题的数字变体或解决方法?我似乎无法在stackoverflow上找到答案,但如果之前已经回答过,请道歉.提前致谢!

string r strsplit

3
推荐指数
1
解决办法
1万
查看次数

使用非常大的数字进行计算时,模数完全丧失准确性

我有以下问题:

> 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)

largenumber r modulus integer-arithmetic

2
推荐指数
1
解决办法
650
查看次数

标签 统计

r ×5

integer-arithmetic ×1

largenumber ×1

modulus ×1

string ×1

strsplit ×1

types ×1