[R] Avoiding FOR loops

Charilaos Skiadas cskiadas at gmail.com
Mon Jan 7 02:18:20 CET 2008


On Jan 6, 2008, at 7:55 PM, dxc13 wrote:

>
> useR's,
>
> I would like to know if there is a way to avoid using FOR loops to  
> perform
> the below calculation.
>
> Consider the following data:
>
snip
> Here, X is a matrix of 3 variables in which each is of size 5 and  
> XK are
> some values that correspond to each variable.  For each variable, I  
> want to
> do:
>
> |Xi - xkj|   where i = 1 to 3 and j = 1 to 10
>
That should be i=1 to 5 I take it?

If I understand what you want to do, then the outer function is the key:

lapply(1:3, function(i) { outer(x[,i], xk[,i],  "-") } )

This should land you with a list of three 5x10 tables

> It looks as if a double FOR loop would work, but can the apply  
> function
> work?  Or some other function that is shorter than a FOR loop?   
> Thank you, I
> hope this makes sense.
>
> Derek
>

Haris Skiadas
Department of Mathematics and Computer Science
Hanover College




More information about the R-help mailing list