Hi On 16 Jan 2003 at 9:41, John Smith wrote:
> Here is a problem I am having. I would sincerely appreciate any > help/advice from the experts who read this list. I have contrived a > simple example, but it gives the same result I encountered in a more > complicated application. > > Given data frame u: > > x y > 31 19 > 32 18 > 33 17 > 34 16 > 35 15 > 36 14 > 37 13 > > I define the function f as follows: > > f <- function(a,b) sum(u$x - a) + sum(u$y - b) try this one f<-function(a,b) colSums(outer(u$x,a,"-"))+colSums(outer(u$y,b,"-")) Though I am not sure if it is quicker then for loop :-) > > One might think of a and b as "mean" values, and the function f totals > up the deviations. > > I wish to generate a table of the value of f given various values of a > and b along grid points. So I define: > > aa <- seq(0.1,1.0,0.1) > bb <- seq(1.0,2.0,0.1) > > Unfortunately, when I issue the command > > s <- outer(aa,bb,f) > > R tells me the following: > > Warning messages: > 1: longer object length > is not a multiple of shorter object length in: u$x - a > 2: longer object length > is not a multiple of shorter object length in: u$y - b > > Outer() does assign values to s, but they are values that do not make > sense. I understand why this is happening. Outer() passes the vectors > aa and bb to function f, where the statement sum(u$x - a) + sum(u$y - > b) is encountered with u$x and u$y of length 7 and a and b of length > 10. R then cannot apply the recycle rule. > > I can do this simply enough with nested loops and get the correct > answer. Unfortunately, the "real" problem is much more involved than > the simple example I show here (data frame u contains hundreds of > observations, and the function f is many lines long) so the solution > takes some time. The R documentation stresses in a number of places > that loops are inefficient and should be eliminated where possible. I > thought using outer() would speed the application up, but it doesn't > work. > > Any suggestions? How can I build up the table of values without using > nested loops? > > John Shonder > > > _________________________________________________________________ Add > photos to your e-mail with MSN 8. Get 2 months FREE*. > > ______________________________________________ > [EMAIL PROTECTED] mailing list > http://www.stat.math.ethz.ch/mailman/listinfo/r-help Petr Pikal Precheza a.s., Nabř.Dr.E.BeneÜe 24, 750 62 Přerov tel: +420581 252 257 ; 724 008 364 [EMAIL PROTECTED]; [EMAIL PROTECTED] fax +420581 252 561 ______________________________________________ [EMAIL PROTECTED] mailing list http://www.stat.math.ethz.ch/mailman/listinfo/r-help
