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,

baptiste

On 30 May 2008, at 10:02, [EMAIL PROTECTED] 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


---------------------------------------------------------------------- --
ATTENTION:

This message contains privileged and confidential info...{{dropped:30}}

______________________________________________
R-help@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.

Reply via email to