[R] Elementary sapply question
Brian Desany
desany.brian at gene.com
Mon Jun 21 21:03:41 CEST 2004
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: r-help-bounces at stat.math.ethz.ch
[mailto:r-help-bounces at stat.math.ethz.ch] 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
> 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
>
>
______________________________________________
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