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
