[R] Passing in Condtions into Object

David Winsemius dwinsemius at comcast.net
Fri Sep 9 05:57:34 CEST 2011


On Sep 8, 2011, at 8:21 PM, Adam Pridgen wrote:

> Hello,
>
> I am trying to pass a conditional expression into an expression to be
> evaluated when ever an R statement is called.  For example:
>
> get_unique_count <- function(df, select, field){
>   uniqs <- unique(subset(df, select)[field])
>   return (nrow(uniqs))
> }
>
>
> In this case select is a conditional statement year == 1980, and the
> function would be called in the following manner:
>
> library(ggplot2)
> get_unique_count(mpg, year==1980, 'manufacturer')

Borrowing heavily from subset.data.frame:

get.uniq <- function (x, logic.expr, field)
{
     e <- substitute(logic.expr)
     r <- eval(e, x, parent.frame())
         if (!is.logical(r))
             stop("'subset' must evaluate to logical")
         r <- r & !is.na(r)
     if (missing(field))
         vars <- TRUE
     else {
         nl <- as.list(seq_along(x))
         names(nl) <- names(x)
         vars <- eval(substitute(field), nl, parent.frame())
     }
     uniqs <- unique(x[r, field, drop = FALSE])
    NROW(uniqs)
}
>
> Thank for any help in advance,
>
> -- Adam
>
> ______________________________________________
> R-help at 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.

David Winsemius, MD
Heritage Laboratories
West Hartford, CT



More information about the R-help mailing list