Julian Taylor <[EMAIL PROTECTED]> writes:

...
> You are better off using other tools to give you the right subsets. Try
>
> d <- do.call("rbind", lapply(split(d, factor(paste(d$a, d$b, sep =
> ""))), 
>                             function(el) el[el$c == max(el$c), ]))

That does work, thanks.  I am a bit mystified by the use of paste,
factor, and split together like that.  By concatenating the columns as
strings, you are coming up with values that aren't in any one column
of the data frame, but split doesn't care.  

That's surprising.  I thought this method was dangerous, so I tried to
fool split by adding a column-a value that was the same as the
concatenation of other column-a and column-b values, "41".  Split
knows to work with both column a and column b, though, somehow.

I guess paste does more than I thought.

  > d <- rbind(d, data.frame(a=41,b=0,c=0))
  > split(d, factor(paste(d$a, d$b, sep = "")))
  $"14"
     a b  c
  1  1 4 31
  11 1 4 41
  
  $"23"
     a b  c
  2  2 3 32
  21 2 3 42
  
  $"32"
     a b  c
  3  3 2 33
  31 3 2 43
  
  $"41"
     a b  c
  4  4 1 34
  41 4 1 44
  
  $"410"
      a b c
  12 41 0 0
  
  > 

-- 
--Ed L Cashin            |   PGP public key:
  [EMAIL PROTECTED]        |   http://noserose.net/e/pgp/

______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to