Named arguments are matched by name. Unnamed arguments are matched by position.
S's argument matching rules are quite complex. It normally helps clarity to name arguments in all but the simplest calls. rep(1, 4) and rep(times=1, x=4) are different calls -- the second could be called perverse, but at least you don't need to remember the arg seqne of rep(). (How many of you know it by heart? Is each before or after length.out?) On Mon, 21 Jun 2004, Brian Desany wrote: > > Looking in ?mapply, I executed the examples: > > > mapply(rep, 1:4, 4:1) > [[1]] > [1] 1 1 1 1 > > [[2]] > [1] 2 2 2 > > [[3]] > [1] 3 3 > > [[4]] > [1] 4 > > > mapply(rep, times=1:4, x=4:1) > [[1]] > [1] 4 > > [[2]] > [1] 3 3 > > [[3]] > [1] 2 2 2 > > [[4]] > [1] 1 1 1 1 > > > I can guess that because these are 2 examples, it is no surprise that the > results are different. Why is this? If ?mapply is giving me a clue, I'm not > seeing it. > > Thanks, > -Brian. > > > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Liaw, Andy > Sent: Monday, June 21, 2004 11:50 AM > To: 'Ajay Shah'; r-help > Subject: RE: [R] Elementary sapply question > > At least two ways: > > 1. Use extra argument in the function being sapply()'ed; e.g., > > > f <- function(x, y) x*x + y*y > > x <- 3:5 > > sapply(x, f, 3) > [1] 18 25 34 > > [See the "..." argument in ?sapply.] > > 2. More generally, if both x and y are vectors (of the same length), then > you can use mapply(); e.g., > > > x <- 1:3 > > y <- 3:5 > > pyth <- function(x, y) x*x + y*y > > mapply(pyth, x, y) > [1] 10 20 34 > > HTH, > Andy > > > From: Ajay Shah > > > > I am discovering sapply! :-) Could you please help me with a very > > elementary question? > > > > Here is what I know. The following two programs generate the > > same answer. > > > > --------------------------------+----------------------------- > > ----------- > > Loops version | sapply version > > --------------------------------+----------------------------- > > ----------- > > | > > f <- function(x) { | f <- function(x) { > > return(x*x) | return(x*x) > > } | } > > values = c(2,4,8) | values = c(2,4,8) > > answers=numeric(3) | answers = sapply(values, f) > > for (i in 1:3) { | > > answers[i] = f(values[i]) | > > } | > > > > and this is cool! > > > > My problem is this. Suppose I have: > > pythagorean <- function(x, y) { > > return(x*x + y*y) > > } > > > > then how do I utilise sapply to replace > > fixed.x = 3 > > y.values = c(3,4,5) > > answers=numeric(3) > > for (i in 1:3) { > > answers[i] = pythagorean(fixed.x, y.values[i]) > > } > > > > ? > > > > I have read the sapply docs, and don't know how to tell him that the > > list values that he'll iterate over "fit in" as y.values[i]. > > > > -- > > Ajay Shah Consultant > > [EMAIL PROTECTED] Department of Economic Affairs > > http://www.mayin.org/ajayshah Ministry of Finance, New Delhi > > > > ______________________________________________ > > [EMAIL PROTECTED] mailing list > > https://www.stat.math.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide! > > http://www.R-project.org/posting-guide.html > > > > > > ______________________________________________ > [EMAIL PROTECTED] mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html > > ______________________________________________ > [EMAIL PROTECTED] mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html > > -- Brian D. Ripley, [EMAIL PROTECTED] Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595 ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
