# Re: [R] apply in apply

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

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.