[R] Elementary sapply question

Liaw, Andy andy_liaw at merck.com
Mon Jun 21 20:49:48 CEST 2004


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
> ajayshah at mayin.org                      Department of Economic Affairs
> http://www.mayin.org/ajayshah           Ministry of Finance, New Delhi
> 
> ______________________________________________
> R-help at stat.math.ethz.ch 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
> 
>




More information about the R-help mailing list