Splus has huge problems with memory leaks (or at least the version I used back in 2001 or so did). If you run a loop with big objects, you may find memory useage creeps up inexorably. One solution is to use R.
A kludge is to write a UNIX shell script that calls S many times (or
you could do this in Perl), quitting after each call and thereby clearing
memory. E.g., the shell script might be along the following lines:
Splus <file1.q >file1.out # file1.q should start your looping
variable
Splus <file2.q >file2.out # file2.q just increments the variable
(don't reset it to its starting value) and does your stuff
Splus <file3.q >file3.out # etc. ....
Put that all in a file loop.csh, do >chmod guo+x loop.csh, and then call >loop.csh.