[R] function ave() with seq_along returning char sequence instead of numeric

Jeff Newmiller jdnewmil at dcn.davis.ca.us
Tue Nov 1 00:34:10 CET 2016

The help page describes the first argument x as a numeric... it is not designed to accept character, so the fact that you get anything even close to right is just a bonus.

As the doctor says, "if it hurts, don't do that".

ave( rep( 1, length( v ), v, FUN=seq_along )
Sent from my phone. Please excuse my brevity.

On October 31, 2016 3:29:01 PM PDT, "Nordlund, Dan (DSHS/RDA)" <NordlDJ at dshs.wa.gov> wrote:
>Given  the following R statements
>v <-  c('a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'c')
>ave(v, list(v), FUN=seq_along)
> [1] "1" "2" "3" "1" "2" "3" "1" "2" "3" "4" 
>I was expecting to get a numeric vector back.  I apparently have missed
>something in the documentation.  If vector v is character, then the
>numeric sequence is converted to character before returning.  I can
>work around by doing something like
>ave(seq_along(v), list(v), FUN=seq_along)
> [1] 1 2 3 1 2 3 1 2 3 4 
>Is the work around the best way to go, or have I missed an option in
>the documentation?
>Daniel Nordlund, PhD
>Research and Data Analysis Division
>Services & Enterprise Support Administration
>Washington State Department of Social and Health Services
>R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>PLEASE do read the posting guide
>and provide commented, minimal, self-contained, reproducible code.

More information about the R-help mailing list