[R] iterative loop with user input?

Christopher Marcum cmarcum at uci.edu
Fri Apr 4 20:01:39 CEST 2008


Hi All,

Thank you for your solutions. They all seem reasonable and I will be
testing these out later this evening. I'm replying to the list because I
think these solutions will come in handy to those using R as a programming
language.


-Chris Marcum
Sociology/Cal(it)^2
University of California - Irvine

Phil Spector wrote:

>In your original solution, I believe you were repeatedly
>reading in the file that had the variable names.  I'd
>do something like this:
>
>prompts = readLines(filename)
>result = sapply(prompts,function(x)readline(paste(x,'? ',sep='')))
>
>result will be a vector with the names of the variables from
>the file and their character values.
>
>                                        - Phil Spector
>                                          Statistical Computing Facility
>                                          Department of Statistics
>                                          UC Berkeley
>                                          spector at stat.berkeley.edu

jim holtman wrote:
> Is this what you want to do:
>
>> x.f <- function(){
> +     x <- list()
> +     for (i in 1:10){
> +         z <- readline(paste("Parameter ", i, ": ", sep=''))
> +         # just store the input in a list with the same key
> +         x[[z]] <- z
> +     }
> +     x
> + }
>> x.f()
> Parameter 1: 12
> Parameter 2: 2
> Parameter 3: asdf
> Parameter 4: 33
> Parameter 5: scs
> Parameter 6: sdaf2
> Parameter 7: 234
> Parameter 8: gfd
> Parameter 9: 123
> Parameter 10: aa
> $`12`
> [1] "12"
>
> $`2`
> [1] "2"
>
> $asdf
> [1] "asdf"
>
>
>
> On Thu, Apr 3, 2008 at 1:18 PM, Christopher Marcum <cmarcum at uci.edu>
> wrote:
>> Hello R-Users,
>>
>> I would like to use an iterative loop to collect user input from within
>> a
>> function. I'm sure that this would be some combination of "for","break",
>> and "next" but have not been able to get the syntax down.
>>
>> I would like to print some text to the screen at each step in the loop,
>> ask the user for input which is saved in an object, and then advance the
>> loop.
>>
>> Here is an example:
>>
>> #anchor is a file with unique ids
>> anchor<-rep(1:30)
>> anchor<-paste(anchor,"uid",sep="")
>>
>> #codelist is where I would like to store user input
>> codelist<-NULL
>>
>> for(i in 1:30) {
>> #tell the user which ID is being coded
>> print(paste("You are coding unique ID",anchor[i],sep=":   "))
>> #Read a line from a text file:
>> print(readLines(file="file_with_30_lines.txt",warn=F)[i])
>> #Ask the user for input
>> codelist[i]<-readline(paste("Select one of the following: \n \t please
>> enter 1, 2, or 3: \n Enter Your Response HERE:   ",sep=""))
>> }
>>
>> Ideally, loop should work from inside a function.
>>
>> Any tips? Thanks in advance for your time and patience.
>>
>> Best,
>> Chris Marcum
>> Sociology/Cal(it)^2
>> University of California-Irvine
>>
>> ______________________________________________
>> R-help at 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.
>>
>
>
>
> --
> Jim Holtman
> Cincinnati, OH
> +1 513 646 9390
>
> What is the problem you are trying to solve?
>
>



More information about the R-help mailing list