[R] User-defined functions in dplyr

Axel Urbiz axel.urbiz at gmail.com
Fri Oct 30 12:04:03 CET 2015


So in this case, "create_bins" returns a vector and I still get the same
error.


create_bins <- function(x, nBins)
{
  Breaks <- unique(quantile(x$pred, probs = seq(0, 1, 1/nBins)))
  bin <- cut(x$pred, breaks = Breaks, include.lowest = TRUE)
  bin
}


### Using dplyr (fails)
nBins = 10
by_group <- dplyr::group_by(df, models)
res_dplyr <- dplyr::summarize(by_group, create_bins, nBins)
Error: not a vector

On Thu, Oct 29, 2015 at 8:28 PM, Jeff Newmiller <jdnewmil at dcn.davis.ca.us>
wrote:

> You are jumping the gun (your other email did get through) and you are
> posting using HTML (which does not come through on the list). Some time
> (re)reading the Posting Guide mentioned at the bottom of all emails on this
> list seems to be in order.
>
> The error is actually quite clear. You should return a vector from your
> function, not a data frame.
> ---------------------------------------------------------------------------
> Jeff Newmiller                        The     .....       .....  Go Live...
> DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live
> Go...
>                                       Live:   OO#.. Dead: OO#..  Playing
> Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
> /Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
> ---------------------------------------------------------------------------
> Sent from my phone. Please excuse my brevity.
>
> On October 29, 2015 4:55:19 PM MST, Axel Urbiz <axel.urbiz at gmail.com>
> wrote:
> >Hello,
> >
> >Sorry, resending this question as the prior was not sent properly.
> >
> >I’m using the plyr package below to add a variable named "bin" to my
> >original data frame "df" with the user-defined function "create_bins".
> >I'd
> >like to get similar results using dplyr instead, but failing to do so.
> >
> >set.seed(4)
> >df <- data.frame(pred = rnorm(100), models = gl(2, 50, 100, labels =
> >c("model1", "model2")))
> >
> >
> >### Using plyr (works fine)
> >create_bins <- function(x, nBins)
> >{
> >  Breaks <- unique(quantile(x$pred, probs = seq(0, 1, 1/nBins)))
> >  dfB <-  data.frame(pred = x$pred,
> >                    bin = cut(x$pred, breaks = Breaks, include.lowest =
> >TRUE))
> >  dfB
> >}
> >
> >nBins = 10
> >res_plyr <- plyr::ddply(df, plyr::.(models), create_bins, nBins)
> >head(res_plyr)
> >
> >### Using dplyr (fails)
> >
> >by_group <- dplyr::group_by(df, models)
> >res_dplyr <- dplyr::summarize(by_group, create_bins, nBins)
> >Error: not a vector
> >
> >
> >Any help would be much appreciated.
> >
> >Best,
> >Axel.
> >
> >       [[alternative HTML version deleted]]
> >
> >______________________________________________
> >R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> >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.
>
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list