Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Wait for user input when running an R script in Linux

I am have a piece of code that prompts for user input and works perfectly fine in while running the code in Windows. However, in Linux, it executes every line without waiting for user input.

I have added the code in a separate function and used system("stty -echo") without success. Why is this happening and what can be done ? (execution command : Rscript test.R)

require(Biostrings)
read_value <- function(prompt_text = "", prompt_suffix = getOption("prompt"),
                       coerce_to= "character")
{
  prompt <- paste(prompt_text, prompt_suffix)
  system("stty -echo")
  as(readline(prompt), coerce_to)
 }

prints<-function()
{ opt<-as.character(readline(prompt = "Enter parameter values: "))
  system("stty -echo")
  i<-1
  while ((i<=5))
    { if (i==1)
       { expr.filename <- as.character(readline(prompt = "Expression file name: "))
         tryCatch( {expr.file<-read.table(expr.filename)},error=function(e)
             {print("ERROR : Enter valid filename!") return })
       }
      if (i==2)
      {  system("stty -echo")
       fasta.filename <- as.character(readline(prompt = "Fasta file name: "))
       tryCatch( {sequence_data<-read.DNAStringSet(fasta.filename)},error=function(e) 
                {print("ERROR : Enter valid filename!")  return })
      }
     #missing piece of code
    i<-i+1
}
like image 348
agatha Avatar asked Mar 10 '12 18:03

agatha


People also ask

How do you wait for a keypress in R?

In order to prompt to print on the console after the Enter key is pressed, we can use the readline() method in base R.


1 Answers

You might want to consider using readLines from "stdin". The prompt function is designed for documenting datasets.

 cat("Please enter a file name ...")
 fil <- readLines(con="stdin", 1)
 cat(fil, "\n")

Save as filnam.r .... Use:

user-linux-prompt$  Rscript filnam.r
like image 61
IRTFM Avatar answered Oct 13 '22 19:10

IRTFM