[R] appending similar data frames?

Prof Brian Ripley ripley at stats.ox.ac.uk
Mon Dec 3 23:41:40 CET 2001


As S-PLUS has a function concat() which does something different (like c,
strips names) could you use a different name?

B

On Mon, 3 Dec 2001, Warnes, Gregory R wrote:

>  >  From: mmiller3 at iupui.edu [mailto:mmiller3 at iupui.edu]
>  >
>  >  Dear R gang,
>  >
>  >  Can anyone help me sort out how to append one data frame to
>  >  another while adding a factor to distinguish which was the
>  >  original frame?
>  >
>
> Here is the function that I wrote to accomplish this task.  It will appear
> in the next version of the gregmisc library (due sometime January).
>
> concat  <-  function(..., names=NULL)
>   {
>     tmp  <-  list(...)
>     if(is.null(names)) names  <- names(tmp)
>     if(is.null(names)) names  <- sapply( as.list(match.call()), deparse)[-1]
>
>     if( any(
>             sapply(tmp, is.matrix)
>             |
>             sapply(tmp, is.data.frame) ) )
>       {
>         len  <-  sapply(tmp, function(x) c(dim(x),1)[1] )
>         len[is.null(len)]  <-  1
>         data <-  rbind( ... )
>       }
>     else
>       {
>         len  <- sapply(tmp,length)
>         data  <-  unlist(tmp)
>
>       }
>
>     namelist  <- factor(rep(names, len), levels=names)
>
>     return( data.frame( data, source=namelist) )
>   }
>
> You use it like:
>
> > x
>   exp size
> 1   a   10
> 2   b    9
> 3   c   10
> 4   d   12
> 5   e   11
> > y
>   exp size
> 1   a   13
> 2   b   15
> 3   c   12
> 4   d   20
> 5   e   15
> > concat(x,y)
>    exp size source
> 1    a   10      x
> 2    b    9      x
> 3    c   10      x
> 4    d   12      x
> 5    e   11      x
> 6    a   13      y
> 7    b   15      y
> 8    c   12      y
> 9    d   20      y
> 10   e   15      y
>
>
> LEGAL NOTICE
> Unless expressly stated otherwise, this message is confidential and may be privileged. It is intended for the addressee(s) only. Access to this E-mail by anyone else is unauthorized. If you are not an addressee, any disclosure or copying of the contents of this E-mail or any action taken (or not taken) in reliance on it is unauthorized and may be unlawful. If you are not an addressee, please inform the sender immediately.
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
> r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> Send "info", "help", or "[un]subscribe"
> (in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
>

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272860 (secr)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list