Try: ?Filter
e.g. Filter(function(x) x > 0, x1) or using gsubfn's fn library(gsubfn) fn$Filter(~ x > 0, x1) On Wed, Oct 29, 2008 at 9:06 AM, Whit Armstrong <[EMAIL PROTECTED]> wrote: > I know it's easy to write a simple loop to do this, but in the spirit > of lapply, I thought I would ask if there is a builtin to filter or > take a subset of a list based on a predicate in a similar way to the > Erlang lists:filter/2 function: > > http://www.erlang.org/doc/man/lists.html#filter-2 > > filter(Pred, List1) -> List2 > Types: > > Pred = fun(Elem) -> bool() > Elem = term() > List1 = List2 = [term()] > List2 is a list of all elements Elem in List1 for which Pred(Elem) returns > true. > > I've tried the simple case in R already: > >> x <- rnorm(10) >> xl <- as.list(x) >> xl[[ x > 0]] > Error in xl[[x > 0]] : attempt to select less than one element >> > > Thanks, > Whit > > ______________________________________________ > R-help@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. > ______________________________________________ R-help@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.