I agree, I would definitely appreciate that. A simpler implementation:
split.data.frame <- function(x, f, drop = FALSE, ...) { ff <- eval(substitute(f), x, parent.frame()) lapply(split(seq_len(nrow(x)), ff, drop = drop, ...), function(ind) x[ind, , drop = FALSE]) } df <- data.frame(x = 1:10, y = rep(1:2, each = 5)) split( df, df$y ) split( df, y ) split( df, x > 3 ) 2009/12/15 Romain Francois <romain.franc...@dbmail.com>: > Hello, > > I very much enjoy "with" and "subset" semantics for data frames and was > wondering if we could have something similar with split, basically by > evaluating the second argument "with" the data frame : > > split.data.frame > function(x, f, drop = FALSE, ...){ > call <- match.call( ) > fcall <- call( "with", data = call[["x"]], expr = call[["f"]] ) > ff <- eval( fcall, parent.frame(1) ) > > lapply(split(seq_len(nrow(x)), ff, drop = drop, ...), function(ind) > x[ind, , drop = FALSE]) > } > > >> split( df, y ) > $`1` > x y > 1 1 1 > 2 2 1 > 3 3 1 > 4 4 1 > 5 5 1 > > $`2` > x y > 6 6 2 > 7 7 2 > 8 8 2 > 9 9 2 > 10 10 2 > >> split( df, x > 3 ) > $`FALSE` > x y > 1 1 1 > 2 2 1 > 3 3 1 > > $`TRUE` > x y > 4 4 1 > 5 5 1 > 6 6 2 > 7 7 2 > 8 8 2 > 9 9 2 > 10 10 2 > > > Romain > > -- > Romain Francois > Professional R Enthusiast > +33(0) 6 28 91 30 30 > http://romainfrancois.blog.free.fr > |- http://tr.im/HlX9 : new package : bibtex > |- http://tr.im/Gq7i : ohloh > `- http://tr.im/FtUu : new package : highlight > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > -- Felix Andrews / 安福立 Postdoctoral Fellow Integrated Catchment Assessment and Management (iCAM) Centre Fenner School of Environment and Society [Bldg 48a] The Australian National University Canberra ACT 0200 Australia M: +61 410 400 963 T: + 61 2 6125 4670 E: felix.andr...@anu.edu.au CRICOS Provider No. 00120C -- http://www.neurofractal.org/felix/ ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel