Creating a Prompt/Answer system to input data into R

I've created some R code for use by people who know nothing of R (though I'm pretty green myself). I've been having people paste in the initial data to the R console (with mixed results), and I was hoping to set up a more user friendly way for people to enter in data.

Ideally someone could sit down at the console, type in a command, and be prompted with specific questions on how to enter the data.

For example, a person loads up r and sees a prompt:

What is x value?

The person types in:

2

Next prompt:

What is y value?

Person types in:

3

Next prompt:

 What are T values?

Person types in:

 4,3,2,1

Next prompt:

What are V values?

Person types in :

4,5,6,9

And with these 4 newly defined variables (X,Y,T,V) R's next step is to run the pre-written code

X+Y
V+T

And in the console the answers pop up

5
8 8 8 10

And everyone is happy

My apologies as this is not a reproducible code kind of question, but I'm not sure how to approach making R ask questions as opposed to me asking question about R!


Solution 1:

Since this is supposed to be used as interactive code only, readline() can work for you. I did not add any error checking, but you'd probably want to do a fair amount of that to ensure proper input. Here's the core concept though:

fun <- function(){
  x <- readline("What is the value of x?")  
  y <- readline("What is the value of y?")
  t <- readline("What are the T values?")
  v <- readline("What are the V values?")

  x <- as.numeric(unlist(strsplit(x, ",")))
  y <- as.numeric(unlist(strsplit(y, ",")))
  t <- as.numeric(unlist(strsplit(t, ",")))
  v <- as.numeric(unlist(strsplit(v, ",")))

  out1 <- x + y
  out2 <- t + v

  return(list(out1, out2))

}

Solution 2:

See also ?menu from utils for a simple text base menu interface and prompt, which is also used in devtools.

Here is an example:

> menu(c("Yes", "No"), title="Do you want this?")
Do you want this? 

1: Yes
2: No

Selection:

Solution 3:

Since this question was brought back from the dead, it's probably writing an updated answer.

If a GUI is at all helpful in this case, the Shiny package is now well-integrated with RStudio, and it would be very easy to implement this as a Shiny application. The website http://shiny.rstudio.com has more info, including examples and documentation.

Solution 4:

It may be overkill for this particular case, but the swirl package is good for interactively introducing R to beginners.

swirl is a software package for the R programming language that turns the R console into an interactive learning environment. Users receive immediate feedback as they are guided through self-paced lessons in data science and R programming.

The instructions for generating content can be found here: http://swirlstats.com/instructors.html.