2015-12-14 15 views
5

Quando si avvia R, il limite di memoria (restituito da memory.limit) è impostato su 2 GB, indipendentemente dalla memoria disponibile sul computer. (I found that out recently). Immagino che ad un certo punto del processo di avvio, questo limite sia impostato sulla memoria effettivamente disponibile.come ignorare il limite di memoria da 2 GB quando R si avvia

questo può essere visto stampando memory.limit() nel file .Rprofile, che è di provenienza all'avvio. Stampa "2047". D'altra parte, quando R si avvia e digito memory.limit() nella console, ottengo "16289".

Io uso una consuetudine .Rprofile di file e ho bisogno di avere accesso a più di 2 GB durante l'avvio.

Come è possibile ignorare questo limite?

La mia soluzione attuale è impostare il limite nel file .Rprofile usando memory.limit(size=16289) ma poi dovrò modificarlo ogni volta che lavoro su un computer con una quantità di RAM diversa che accade abbastanza spesso.

Esiste un'opzione che posso cambiare, un file .ini che posso modificare, o qualcosa che posso fare?

OS e R versione:

> sessionInfo() 
R version 3.2.2 (2015-08-14) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 
Running under: Windows 7 x64 (build 7601) Service Pack 1 

Edit: questo non è un duplicato , almeno non un duplicato della questione proposta. Non si tratta di gestire la memoria disponibile! Ho 16 GB di memoria e memory.limit() mostra che il mio limite è in realtà 16 GB.

Tutto è cominciato quando ho ricevuto l'avviso che avevo "ha raggiunto l'allocazione di memoria da 2 GB" (implicando che avevo un limite di 2GB di memoria). Dopo l'indagine, sembra che indeed R limits the memory at 2GB during the startup process.

voglio caricare automaticamente i miei dati quando R si avvia, per questo ho un piccolo script di carico nel .Rprofile. Carico più di 2 GB di dati, quindi ho bisogno di avere accesso al mio 16GB. La mia domanda riguarda il raggiungimento di questo. Questo non ha nulla in comune con il duplicato proposto, tranne le parole chiave ...

+1

Quali versioni R e OS stanno utilizzando? –

+2

@Vova Non è un duplicato, il problema è completamente diverso IMO. Ho abbastanza memoria e non sto facendo alcuna operazione di fame di memoria. Il mio problema è che il limite di memoria è impostato su 2 GB all'avvio di R. –

+0

Devo dire che sono sorpreso dal numero di voti "vicini" ... La cosiddetta domanda duplicata riguarda qualcuno che raggiunge il limite di memoria sul proprio PC. La "soluzione" è ottimizzare il codice per essere meno memoria. ---- Il mio problema è che durante l'avvio R, il limite di memoria è impostato artificialmente basso, impedendomi quindi di caricare più di 2 GB di dati automaticamente dal.File Rprofile È assurdo riferirmi all'altro post: POSSO caricare i dati una volta che R è stato avviato perché ho abbastanza memoria. La mia domanda riguarda il limite di memoria di 2 GB all'avvio, questo è completamente diverso. –

risposta

1

sto interpretando questo come si vogliono memory.limit(size=16289) nel file .RProfile, ma non si desidera impostare il numero specifico di ogni tempo si cambia computer con memoria diversa. Perché non estrarre dinamicamente la memoria che ti serve? In finestre:

TOT_MEM <- as.numeric(gsub("\r","",gsub("TotalVisibleMemorySize=","",system('wmic OS get TotalVisibleMemorySize /Value',intern=TRUE)[3])))/1024 
memory.limit(size=TOT_MEM) 

che impostare la memoria disponibile per la memoria totale del sistema, o

FREE_MEM <- as.numeric(gsub("\r","",gsub("FreePhysicalMemory=","",system('wmic OS get FreePhysicalMemory /Value',intern=TRUE)[3])))/1024 
memory.limit(size=FREE_MEM) 

che memory.limit fisserebbe alla memoria totale disponibile all'avvio.

Inserirlo in RProfile, sopra il quale si caricano i dati.

+0

Grazie per la chiamata di sistema! Richiederà un po 'di adattamento, visto che uso Windows e Linux in modo intercambiabile ... Credo di poter testare il sistema operativo e il ramo di conseguenza. Continuo a pensare che ci deve essere una sorta di file .ini in cui potrei specificare quale dovrebbe essere il limite di memoria all'avvio. –

+0

(Ora che ci penso, non ho nemmeno controllato se il problema appare anche su Linux) –

Problemi correlati