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.


The clue you seek is in ?rep which has "x" then "times" as its arguments. The first example is equivalent to mapply(rep, x = 1:4, times = 4:1) whereas the second example you were more explicit about the arguments order.


--sundar



-----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

______________________________________________ [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

Reply via email to