combine               package:Biobase               R Documentation

Methods for Function combine in Package 'Biobase'

Description:

     This generic function handles methods for combining or merging
     different Bioconductor data structures. It should, given an
     arbitrary number of arguments of the same class (possibly by
     inheritance), combine them into a single instance in a sensible
     way (some methods may only combine 2 objects, ignoring '...' in
     the argument list; because Bioconductor data structures are
     complicated, check carefully that 'combine' does as you intend).

Usage:

     combine(x, y, ...)

Arguments:

       x: One of the values. 

       y: A second value. 

     ...: Any other objects of the same class as 'x' and 'y'. 

Details:

     There are two basic combine strategies. One is an intersection
     strategy. The returned value should only have rows (or columns)
     that are found in all input data objects. The union strategy says
     that the return value will have all rows (or columns) found in any
     one of the input data objects (in which case some indication of
     what to use for missing values will need to be provided).

     These functions and methods are currently under construction.
     Please let us know if there are features that you require.

Value:

     A single value of the same class as the most specific common
     ancestor (in class terms) of the input values. This will contain
     the appropriate combination of the data in the input values.

Methods:


     'combine(x=ANY, missing)' Return the first (x) argument unchanged.

     'combine(data.frame, data.frame)' Combines two 'data.frame'
          objects so that the resulting 'data.frame' contains all rows
          and columns of the original objects. Rows and columns in the
          returned value are unique, that is, a row or column
          represented in both arguments is represented only once in the
          result. To perform this operation, 'combine' makes sure that
          data in shared rows and columns are identical in the two
          data.frames. Data differences in shared rows and columns
          usually cause an error. 'combine' issues a warning when a
          column is a 'factor' and the levels of the factor in the two
          data.frames are different.

     'combine(matrix, matrix)' Combined two 'matrix' objects so that
          the resulting 'matrix' contains all rows and columns of the
          original objects. Both matricies must have 'dimnames'. Rows
          and columns in the returned value are unique, that is, a row
          or column represented in both arguments is represented only
          once in the result. To perform this operation, 'combine'
          makes sure that data in shared rows and columns are all equal
          in the two matricies.

     Additional 'combine' methods are defined for 'AnnotatedDataFrame',
     'AssayData', 'MIAME', and 'eSet' classes and subclasses.

Author(s):

     Biocore

See Also:

     'merge'

Examples:

       x <- data.frame(x=1:5,
               y=factor(letters[1:5], levels=letters[1:8]),
               row.names=letters[1:5])
       y <- data.frame(z=3:7,
               y=factor(letters[3:7], levels=letters[1:8]),
               row.names=letters[3:7])
       combine(x,y)

       w <- data.frame(w=4:8,
              y=factor(letters[4:8], levels=letters[1:8]),
              row.names=letters[4:8])
       combine(w, x, y)

       # y is converted to 'factor' with different levels
       df1 <- data.frame(x=1:5,y=letters[1:5], row.names=letters[1:5])
       df2 <- data.frame(z=3:7,y=letters[3:7], row.names=letters[3:7])
       try(combine(df1, df2)) # fails
       # solution 1: ensure identical levels
       y1 <- factor(letters[1:5], levels=letters[1:7])
       y2 <- factor(letters[3:7], levels=letters[1:7])
       df1 <- data.frame(x=1:5,y=y1, row.names=letters[1:5])
       df2 <- data.frame(z=3:7,y=y2, row.names=letters[3:7])
       combine(df1, df2)
       # solution 2: force column to be 'character'
       df1 <- data.frame(x=1:5,y=I(letters[1:5]), row.names=letters[1:5])
       df2 <- data.frame(z=3:7,y=I(letters[3:7]), row.names=letters[3:7])
       combine(df1, df2)

       m <- matrix(1:20, nrow=5, dimnames=list(LETTERS[1:5], letters[1:4]))
       combine(m[1:3,], m[4:5,])
       combine(m[1:3, 1:3], m[3:5, 3:4]) # overlap

