From: Charilaos Skiadas <cskiadas_at_gmail.com>

Date: Fri, 30 May 2008 08:19:59 -0400

R-help_at_r-project.org mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. Received on Mon 02 Jun 2008 - 06:11:10 GMT

Date: Fri, 30 May 2008 08:19:59 -0400

On May 30, 2008, at 5:37 AM, baptiste Auguié wrote:

> Thank you for the suggestions (off-list as well). I think the best

*> option may eventually be an explicit for loop to make things
**> clearer. To clarify a bit, I've used the plot function in the
**> example where in fact it is a numerical integration (which is why I
**> need to pass an additional variable in the second apply call),
**>
**>> intg <- function (y, x)
**>> {
**>> n <- length(x)
**>> index <- order(x)
**>> dx <- diff(sort(x))
**>> z <- y[index]
**>> ys <- (z[1:(n - 1)] + z[2:n])/2
**>> sum(ys * dx)
**>> }
**>> <environment: namespace:PROcess>
**>
**>
**> Thanks again for the suggestions,
*

I think this is where the beauty of ... comes in, the following should be doing just what you want:

sapply(my.data, apply, 2, intg, x)

More clear? Not sure I can judge that, certainly more concise. sapply just passes the extra arguments to apply, which then just passes them to intg.

*> baptiste
*

Haris Skiadas

Department of Mathematics and Computer Science
Hanover College

> On 30 May 2008, at 10:02, Richard.Cotton@hsl.gov.uk wrote:

*>
**>>> I need to apply a function on each column of each matrix
**>>> contained in
**>>> a list. Consider the following code,
**>>>
**>>>> x <- 1:3
**>>>> my.data <- list(matrix(c(1,2,3,4,5,6),ncol=2),
**>>>> matrix(c(4,5,6,7,8,9),ncol=2))
**>>>>
**>>>> par(mfrow=c(2,2))
**>>>> results <- sapply(1:length(my.data),
**>>>> function(ii) apply(my.data[[ii]], 2, function(y) plot
**>>>> (x,y) ))
**>> #
**>>>> plot is for demonstration purposes
**>>>
**>>>
**>>> It works, but I think this is quite dirty code. Is there a simpler
**>>> way of achieving this?
**>>
**>> The last line can be simplified
**>> results <- sapply(my.data, function(x) apply(x,2,sum))
**>>
**>> (It is perhaps a little clearer what is going on when you use sum
**>> rather
**>> than plot as the example function.)
**>>
**>> Regards,
**>> Richie.
**>>
**>> Mathematical Sciences Unit
**>> HSL
**>>
*

R-help_at_r-project.org mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. Received on Mon 02 Jun 2008 - 06:11:10 GMT

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.2.0, at Mon 02 Jun 2008 - 06:30:42 GMT.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*