Puoi rispondere a molte delle tue domande leggendo la pagina di aiuto ?integer
. Si dice:
R utilizza numeri interi a 32-bit per vettori interi, quindi l'intervallo di interi rappresentabili è limitato a circa +/- 2 * 10^9.
L'espansione a numeri interi più grandi è all'esame di R Core, ma non accadrà nel prossimo futuro.
Se si desidera una capacità di "bignum" quindi installare di Martin Maechler Rmpfr package [PDF]. Raccomando il pacchetto 'Rmpfr' a causa della reputazione dell'autore. Martin Maechler è anche fortemente coinvolto nello sviluppo del pacchetto Matrix e anche in R Core. Ci sono alternative, inclusi pacchetti aritmetici come "gmp", "Brobdingnag" e "Ryacas" (quest'ultimo offre anche un'interfaccia matematica simbolica).
Successivamente, per rispondere ai commenti critici nella risposta a cui si è collegati e su come valutare la pertinenza del proprio lavoro, considerare quanto segue: Se esistesse la stessa funzionalità statistica disponibile in una di quelle "moderne" lingue come è in R, probabilmente vedresti una migrazione dell'utente in quella direzione. Ma direi che la migrazione, e certamente la crescita, è in direzione R al momento. R è stato costruito da statistici per le statistiche.
C'era una volta una variante Lisp con un pacchetto di statistiche, XLISP-Stat, ma la sua principale sviluppatore e sostenitore è ora membro di R-Core. D'altra parte uno dei primi sviluppatori R, Ross Ihaka, suggests working toward development in a Lisp-like language [PDF]. Esiste un linguaggio compilato chiamato Clojure (pronunciato come chi parla inglese direbbe "chiusura") con un'interfaccia sperimentale, Rincanter.
Aggiornamento:
Le nuove versioni R (. 3.0 +) ha 53 bit interi di una specie (utilizzando il numeric
mantissa). Quando un elemento vettoriale "integer" è assegnato un valore superiore '.Machine $ integer.max', l'intero vettore è costretto a 'numerico', pseudonimo 'doppio'. valore massimo per integers
rimane com'era, tuttavia, ci può essere coercizione di vettori interi a doppie per preservare l'accuratezza nei casi precedentemente genererebbero troppopieno. Sfortunatamente, la lunghezza degli elenchi, delle dimensioni di matrice e matrice e dei vettori è ancora impostata su integer.max
.
Quando si legge in grandi valori da file, è probabilmente più sicuro utilizzare il carattere di classe come il bersaglio e poi manipolare. Se c'è una coercizione ai valori di NA, ci sarà un avvertimento.
+1 per il pacchetto Rmpfr! –
Anche il pacchetto 'gmp' può essere di interesse – James
Sto facendo un DT [, sapply (.SD, sum, na.rm = T)] con un data.table riempito con 0,1 e NA, con 2 milioni filari. E ottengo il messaggio di overflow, ma il numero massimo generato dovrebbe essere inferiore a 2 milioni. Cosa potrebbe accadere? – skan