My fault, I used Runtime.getRuntime.exec("/usr/bin/R --vanilla"), and was prompted with "/usr/bin/R --vanilla not found". This morning I tried command with String array, it works.
And, you said "vanilla" is a non-interactive mode, so if I have several R scripts to run, I have to evaluate them one by one: create a R process -> foward the first script to the process through output stream -> close the output stream & get feed back from inputstream -> close input stream & exit R -> create a new process to evaluate the next script. There is no way to evaluate all commands or scripts in one R process, right? > ZhaoWei <[EMAIL PROTECTED]> writes: > > > Great, "--vanilla" works! > > Can you please tell me what this parameter means? > > And, it works with the execuatble(/usr/lib/R/bin/exec/R). I'm wondering > > is it possible to do the same with the shell script(/usr/bin/R), anyway > > when you type "R" in command line, it means the shell script. > > By 'without /bin/sh' I mean you want to start R as > > /usr/bin/R --vanilla > > like > > String[] cmd = new String[] {"/usr/bin/R", "--vanilla"}; > Process proc = java.lang.Runtime.getRuntime().exec(cmd); > > If you do not specify --vanilla, and do > > Process proc = java.lang.Runtime.getRuntime().exec("/usr/bin/R"); > // create byte array 'bytes', then > proc.getErrorStream().read(bytes) > // interpret bytes as String > > you'll see the error > > Fatal error: you must specify '--save', '--no-save' or '--vanilla' > > You need '--vanilla' because you are creating a non-interactive > process; --vanilla tells the non-interactive process how to start up > and shut down > > Since the process is not interactive, you can foward bytes to it with > proc.getOutputStream(), and retrieve results from > proc.getInputStream() (once the output stream has been closed), but > you are not interacting with R the way you would at an R prompt. > > Martin > > > Thanks again! > > > >> > Hi the list: > >> > > >> > I can not create R process from Java application with my linux box, > >> > the process never was created, or just terminated immediately after I > >> > called Runtime.getRuntime().exec(...) > >> > > >> > >> Did you check the error stream? I think you want to start R with a > >> command line argument like "--vanilla", without /bin/sh. > >> > >> Martin > >> > >> > The command lines I have tried are(the paths are all correct): > >> > > >> > "/bin/sh /usr/bin/R" > >> > "/bin/sh -c /usr/bin/R" > >> > "/usr/lib/R/bin/exec/R"(also set R_HOME=/usr/lib/R) > >> > > >> > I also tried ProcessBuilder, which is no help. I'm confused, is this > >> > possible? > >> > > >> > Many Thanks! > >> > > >> > ______________________________________________ > >> > R-help@r-project.org mailing list > >> > https://stat.ethz.ch/mailman/listinfo/r-help > >> > PLEASE do read the posting guide > >> > http://www.R-project.org/posting-guide.html > >> > and provide commented, minimal, self-contained, reproducible code. > >> > >> -- > >> Martin Morgan > >> Computational Biology / Fred Hutchinson Cancer Research Center > >> 1100 Fairview Ave. N. > >> PO Box 19024 Seattle, WA 98109 > >> > >> Location: Arnold Building M2 B169 > >> Phone: (206) 667-2793 > > -- > Martin Morgan > Computational Biology / Fred Hutchinson Cancer Research Center > 1100 Fairview Ave. N. > PO Box 19024 Seattle, WA 98109 > > Location: Arnold Building M2 B169 > Phone: (206) 667-2793 ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.