[R] Simple question on eval

Joshua Wiley jwiley.psych at gmail.com
Wed Dec 1 17:26:47 CET 2010


Here are two options that might work for you given the little bit you've said:

## If its the same parameter all 30 times
## say, for example, base = 4.5 to log
for(i in 1:30) {
  print(log(1:10, base = 4.5))
}

## if they are different parameters, you could try
lapply(X = c(1.3, 3, 2.2, 4, 5), FUN = function(x) {
  log(1:10, base = x)})

## the 'X' argument to lapply() is based, one at a time,
## to whatever the function is (the 'FUN' argument)
## so the above is equivalent to
log(1:10, base = 1.3)
log(1:10, base = 3)
log(1:10, base = 2.2)
log(1:10, base = 4)
log(1:10, base = 5)
## but easier to type

Cheers,

Josh

@Ivan do.call() passes a list of arguments, but I am not sure it would
easily adapt to passing 30 different arguments one at a time or even
the same argument 30 times.

On Wed, Dec 1, 2010 at 7:39 AM, Lamke <lamkelf at gmail.com> wrote:
>
> Thank you so much Joshua.  That's exactly what I am looking for.
>
> What I wanted to do is to pass a parameter to a function and I have to run
> the functions 30 times.  Instead of typing them all out, I created a long
> string of "f(a);f(b);f(c) ..." using paste() and use eval and parse to
> evaluative them all at once.  I am sure there are better ways of doing it
> but I just know this.
> --
> View this message in context: http://r.789695.n4.nabble.com/Simple-question-on-eval-tp3066346p3067508.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> 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.
>



-- 
Joshua Wiley
Ph.D. Student, Health Psychology
University of California, Los Angeles
http://www.joshuawiley.com/



More information about the R-help mailing list