Quali scelte dei tipi di dati dobbiamo gestire i numeri grandi in R? Per impostazione predefinita, la dimensione di un intero sembra essere a 32 bit, quindi i numeri di Bigint dal server SQL così come tutti i numeri grandi passati da python tramite rpy2 vengono manchiati.equivalente a lunghezza/bigint/decimale in R
> 123456789123
[1] 123456789123
> 1234567891234
[1] 1.234568e+12
Durante la lettura di un valore bigint di 123.456.789.123,456789 millions usando RODBC, ritorna come 123.456.789.123,456784 millions (vedi l'ultima cifra), e lo stesso numero quando deserializzata via RJSONIO, ritorna come -1395630315L (che sembra un insetto aggiuntivo/limitazione di RJSONIO).
> fromJSON('[1234567891]')
[1] 1234567891
> fromJSON('[12345678912]')
[1] -539222976
In realtà, ho bisogno di essere in grado di gestire grandi numeri provenienti da JSON, quindi con limitazione di RJSONIO, non possono avere una soluzione, tranne per la ricerca di una migliore libreria JSON (che sembra un non-diritto di opzione adesso). Mi piacerebbe sapere cosa hanno da dire gli esperti su questo e in generale.
Ho guardato la funzione as.numeric(), ma ero confuso dal fatto che anche la modalità (1) dava "numerico" come tipo, quindi pensavo di averli già a che fare. Ho quindi provato as.numeric ("123456789123456789") e ho visto solo pochi numeri stampati, quindi ho pensato che avesse perso la precisione. Prima non conoscevo le opzioni ("cifre"). – haridsv
Ah, sì, la cosa delle cifre. Inoltre, se hai bisogno di maggiore precisione o numeri grandi, CRAN ha pacchetti per questo come ad es. il (strano nome :-) pacchetto Brobdingnag per grandi numeri, e c'è anche il pacchetto gmp per interfacciare GNU gmp. –
(So che Dirk lo sa, ma sto commentando per avvisare altri utenti.) Le versioni più recenti di R consentono una transizione più semplice allo storage intero come doppi. Tuttavia, la dimensione della matrice non sta ancora utilizzando quella modalità automatica. –