[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