Skip to content

does R read commands from scripts instantanously or seuqently during processing

5 messages · Jannis, Jeff Newmiller, Rolf Turner +1 more

#
Dear R community,


when I source a script into R via:


R --slave < scriptname.R


is the whole script file read at once during startup or is each 
indivdual line of code read seqnetially during the execution (i.e. 
directly before r processes the respective command)? In other words, can 
I savely edit the  scriptname.R file even when an active R process still 
runs the command above?


Thanks for your help
Jannis
#
Your use of the "<" redirection operator is an operating system feature, not an R feature. I am not aware of any operating system that that would function properly in the use case you describe.

It is possible, and common, to construct your input file as a stream as you go. But a stream is not a file on disk.
---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                      Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
--------------------------------------------------------------------------- 
Sent from my phone. Please excuse my brevity.
Jannis <bt_jannis at yahoo.de> wrote:

            
#
On 03/15/2013 05:13 AM, Jannis wrote:
Experiment.  Build a toy script with a loop that never terminates. Set
it going.  Edit the script and change the code so that the loop terminates.
See what happens.

[It seems to me that nothing happens, so that you *can* "safely" edit 
the script while
the process runs.  But further experimentation would be advisable.]

     cheers,

         Rolf Turner
#
Dear all,

thanks, Rolf and Jeff, for your replies. The command below runs under 
Suse Linux. I guess, hoewever, the phenomena I observed would heappen 
under other oprating systems as well. The reason why I asked was that R 
produced some error messages that did not really point me to the 
direction of the edited script file. These errors were usually something 
like:

Error: unexpected symbol in "cess finished."

The line in the script which caused this error is:

print(paste(as.character(Sys.time()), ': Process finished.', sep=''))

This line contains valid R code and would normally not produce an error. 
Some testing showed that the error above only happens when I edit the 
code of the script while the script is run. So R probably reads in a 
script submitted that way seuqently directly while executing the 
individual commands. No idea though what happens if i would start the 
script via source inside R itself.


Thanks again for your suggestions
Jannis
On 14.03.2013 22:47, Rolf Turner wrote:
#
On 15/03/2013 10:40, Jannis wrote:
If reading from stdin, it does (like any other interpreter): however 
stdin is buffered if re-directed, so the input script is read in blocks 
from a file (the size of the block depending on the OS).
R is Open Source, and you can read the code of source().  It really 
isn't hard to see that it parses the whole file, then executes the 
parsed expressions one at a time.