Re: [R] User input when running R code in batch mode
> Barry Rowlingson > on Tue, 27 Oct 2009 10:17:24 +0100 writes: > On Tue, Oct 27, 2009 at 9:20 AM, Kaushik Krishnan > wrote: >> $ r --vanilla < test.r >>> a <- scan(what='character',n=1); a >> 1: Read 0 items >> character(0) >> >> Now it's not working. > Assuming this is a unix environment, the syntax '< test.r' means 'my > standard input stream is the file test.r'. That's not what you want. > Give R the file name as an argument and let the standard input stream > remain user input: > $ r --vanilla test.r > 1: hello > Read 1 item > [1] "hello" > Note that this is 'r' and not 'R'. For me this comes from the > 'littler' package in Ubuntu Linux. The same thing with 'R' doesn't > work: > $ R --vanilla test.r > ARGUMENT 'test.r' __ignored__ > [banner] >> [the R prompt appears] > Maybe there's a way of doing this with big R, but I think > littler is designed for this kind of thing. yes, and it was historically the first, and maybe still the most efficient way to do so. The "big R" way is to use 'Rscript' which comes with R, e.g., Rscript --vanilla -e 'cat("a string please: "); a <- readLines("stdin",n=1); str(a)' input a string please: Foobar chr "Foobar" (Note that here I use -e '' instead of an R script file which of course is possible too). Martin Maechler, ETH Zurich >> Is there any way to make R stop for the user to enter >> values when running in batch mode either by changing the >> way I invoke scan() or readLines() or by using any other >> function? > An alternative is to use the tcltk package to make a > dialog for user input. > Barry > __ > 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. __ 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.
Re: [R] User input when running R code in batch mode
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Kaushik Krishnan wrote: > Is there any way to make R stop for the user to enter values when > running in batch mode either by changing the way I invoke scan() or > readLines() or by using any other function? At least on linux this works: be...@t40:~/r-test $ cat test.R readline2 = function(prompt=""){ cat(prompt) readLines("stdin", 1) } print(readline2("enter a number: ")) be...@t40:~/r-test $ Rscript test.R enter a number: 42 [1] "42" -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.6 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iD8DBQFK5xUSxT6R4jlFoh0RAkhTAKCB4qUjPlULL9vjUaLLxarTor2z1QCeNGHA 4B2VmkqtyEKMKKGUnt8sjiY= =VYJs -END PGP SIGNATURE- __ 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.
Re: [R] User input when running R code in batch mode
On Tue, Oct 27, 2009 at 9:20 AM, Kaushik Krishnan wrote: > $ r --vanilla < test.r >> a <- scan(what='character',n=1); a > 1: Read 0 items > character(0) > > Now it's not working. Assuming this is a unix environment, the syntax '< test.r' means 'my standard input stream is the file test.r'. That's not what you want. Give R the file name as an argument and let the standard input stream remain user input: $ r --vanilla test.r 1: hello Read 1 item [1] "hello" Note that this is 'r' and not 'R'. For me this comes from the 'littler' package in Ubuntu Linux. The same thing with 'R' doesn't work: $ R --vanilla test.r ARGUMENT 'test.r' __ignored__ [banner] > [the R prompt appears] Maybe there's a way of doing this with big R, but I think littler is designed for this kind of thing. > Is there any way to make R stop for the user to enter values when > running in batch mode either by changing the way I invoke scan() or > readLines() or by using any other function? An alternative is to use the tcltk package to make a dialog for user input. Barry __ 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.
[R] User input when running R code in batch mode
Hi I've been stumbling over a simple issue that undoubtedly has an easy solution. I need to have some way for a user to enter some values into a data frame which R will then work on. I know that data entry should ideally be done otherwise and I should use R only for the computation, but R's data manipulation abilities makes it efficient for me to write the entire code in it. When I ran R line-by-line, I did: > a <- scan (what='character',n=1) 1: abcd Read 1 item > a [1] "abcd" Everything works fine. But if I save the line "a <- scan (what='character', n=1); a" as `test.r' and run the file in command line, I get: $ r --vanilla < test.r > a <- scan(what='character',n=1); a 1: Read 0 items character(0) Now it's not working. I read what others had suggested on earlier threads and tried different functions, including readLines(). In line-by-line, I wrote the same lines as earlier, except using `readLines(con=stdin(),n=1)' instead of `scan(what='character', n=1)'. It worked fine. Yet, when I tried the modified lines (with readLines() instead of scan()) in batch mode, R didn't wait for user input and said `character(0)'. Is there any way to make R stop for the user to enter values when running in batch mode either by changing the way I invoke scan() or readLines() or by using any other function? Thanks in advance -- Kaushik Krishnan (kaushik.s.krish...@gmail.com) __ 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.