2016-07-27 7 views
0

Ich versuche, so etwas zu tun:Skript schließen in R

"Main.R" 

for(i in ...){ 
... 
... 
source("file.R") 
} 

Das Problem ist, dass, wenn ich Main.R renne, verwendet es den gesamten Speicher RAM, weil file.R nicht aufhört und es schafft viele von ihnen. (Entschuldigung für mein Englisch).

So bekomme ich eine Nachricht auf Windows zu sagen, dass der Speicher lesen und schreiben konnte nicht ...

Wie kann ich dieses Problem beheben? Kann ich NUR file.R schließen, wenn es fertig ist?

PS: file.R Aufruf weitere Skripte ...

Vielen Dank.

+0

Es sieht so aus, als ob Sie die Quelle ("file.R") so oft wie Iterationen in Ihrer Schleife ausführen (extrahieren Sie sie aus der Schleife). Plus rm(), um Objekte zu entfernen, die Sie nicht mehr benötigen, nachdem Sie das Skript ausgeführt haben .... – tokiloutok

+0

Ja, ich mache das, aber ich will das hahahaha. Ich muss file.R mindestens 25 Mal ausführen ... Ich habe rm() in file.R am Anfang, aber es funktioniert nicht ... Jedes Skript ist auf dem Task-Manager :( – Alopiso

+0

Warum machen Sie es nicht a Funktion? – vaettchen

Antwort

0

Das Problem ist, dass ich pararell so am Ende file.R habe ich stopCluster(cl) geschrieben habe und die Aufgabe danach schließen.

0

Sie können gc() während oder nach dem Ausführen Ihrer Funktion verwenden, um Speicherplatz freizugeben. Auch nach rm() kann es sinnvoll sein.

+0

Ich habe dies getan und es tut nicht funktionieren ... – Alopiso

+0

Haben Sie versucht, es nach X Iterationen zu tun? Wenn du mindestens 25 brauchst, vielleicht alle 5? – JMarchante

+0

Ich legte 'gc()' nach 'source (" file.R ")' und in der Schleife und es funktioniert nicht, noch auf dem Task-Manager eine Menge von Rscript.exe ... – Alopiso