2013-12-12 14 views
8

Esiste la possibilità di sopprimere tutti i messaggi di gc() in R?Soppressione dell'output di gc()

I soliti come suppressWarnings(gc()) o suppressMessages(gc()) non funzionano. gc() stessa ha un'opzione verbose, ma questo non sta funzionando come piace a me:

> gc(verbose=TRUE) 
Garbage collection 375 = 234+40+101 (level 2) ... 
17.9 Mbytes of cons cells used (41%) 
171.2 Mbytes of vectors used (43%) 
used (Mb) gc trigger (Mb) max used (Mb) 
Ncells 334493 17.9  818163 43.7 818163 43.7 
Vcells 22431904 171.2 52178020 398.1 50193465 383.0 
> gc(verbose=FALSE) 
used (Mb) gc trigger (Mb) max used (Mb) 
Ncells 334496 17.9  818163 43.7 818163 43.7 
Vcells 22431916 171.2 52178020 398.1 50193465 383.0 

Grazie in anticipo!

migliore, Ruben

+2

Questo sembra un po 'strano, poiché l'unico motivo usuale per chiamare 'gc' è vedere quell'output. Come scrive Hadley, "non c'è mai motivo di chiamare te stesso gc(), oltre a vedere quanta memoria è in uso, R chiamerà automaticamente eseguire garbage collection ogni volta che ha bisogno di più spazio." Vedi http://adv-r.had.co.nz/memory.html – Aaron

+1

@Aaron: come continuato in '? Gc':" _Tuttavia, può essere utile chiamare gc dopo aver rimosso un oggetto di grandi dimensioni, in questo modo potrebbe richiedere a R di restituire memoria al sistema operativo._ "In particolare, lo uso quando sono a) funzioni di temporizzazione per confrontare la velocità eb) quando si utilizza' read.xlsx' per fogli di calcolo più grandi - Ho incontrato problemi di overflow di memoria senza 'gc()' dopo aver letto in tali oggetti. – MichaelChirico

risposta

18

volte uso invisible(gc()).

+0

Molto meglio del mio approccio "non carino". Potrebbe sempre avvolgerlo, ad esempio 'mygc <-function (...) invisible (gc (...))' –

+0

Funziona perfettamente. Grazie! – DrewsRM

0

Non abbastanza, ma

foo <- gc();rm foo 

si prenderà cura di esso