DataFrame objects

The DataFrame class extends the DataTable virtual class and supports the storage of any type of object (with length and [ methods) as columns.

classes, methods

On the whole, the DataFrame behaves very similarly to data.frame, in terms of construction, subsetting, splitting, combining, etc. The most notable exception is that the row names are optional. This means calling rownames(x) will return NULL if there are no row names. Of course, it could return seq_len(nrow(x)), but returning NULL informs, for example, combination functions that no row names are desired (they are often a luxury when dealing with large data).

As DataFrame derives from Vector, it is possible to set an annotation string. Also, another DataFrame can hold metadata on the columns.

For a class to be supported as a column, it must have length and [ methods, where [ supports subsetting only by i and respects drop=FALSE. Optionally, a method may be defined for the showAsCell generic, which should return a vector of the same length as the subset of the column passed to it. This vector is then placed into a data.frame and converted to text with format. Thus, each element of the vector should be some simple, usually character, representation of the corresponding element in the column.


DataFrame(..., row.names = NULL, check.names = TRUE): Constructs a DataFrame in similar fashion to data.frame. Each argument in ... is coerced to a DataFrame and combined column-wise. No special effort is expended to automatically determine the row names from the arguments. The row names should be given in row.names; otherwise, there are no row names. This is by design, as row names are normally undesirable when data is large. If check.names is TRUE, the column names will be checked for syntactic validity and made unique, if necessary.

To store an object of a class that does not support coercion to DataFrame, wrap it in I(). The class must still have methods for length and [.

See Also

  • class:DataFrame
  • DataFrame-class
  • nrow,DataFrame-method
  • ncol,DataFrame-method
  • rownames,DataFrame-method
  • colnames,DataFrame-method
  • rownames<-,DataFrame-method
  • colnames<-,DataFrame-method
  • DataFrame
  • [,DataFrame-method
  • [<-,DataFrame-method
  • [[<-,DataFrame-method
  • as.matrix,DataFrame-method
  • coerce,matrix,DataFrame-method
  • coerce,vector,DataFrame-method
  • coerce,list,DataFrame-method
  • coerce,integer,DataFrame-method
  • coerce,Vector,DataFrame-method
  • coerce,data.frame,DataFrame-method
  • coerce,NULL,DataFrame-method
  • coerce,table,DataFrame-method
  • coerce,AsIs,DataFrame-method
  • coerce,DataFrame,data.frame-method
  • coerce,xtabs,DataFrame-method
  • coerce,ANY,DataFrame-method
  • coerce,SimpleList,DataFrame-method
  • coerce,ANY,AsIs-method
  • cbind,DataFrame-method
  • rbind,DataFrame-method
score <- c(1L, 3L, NA)
counts <- c(10L, 2L, NA)
row.names <- c("one", "two", "three")
df <- DataFrame(score) # single column
df <- DataFrame(score, row.names = row.names) #with row names
df <- DataFrame(vals = score) # explicit naming

# arrays
ary <- array(1:4, c(2,1,2))
sw <- DataFrame(I(ary))  
# a data.frame
sw <- DataFrame(swiss) # swiss, without row names
# now with row names
sw <- DataFrame(swiss, row.names = rownames(swiss)) # swiss

# subsetting
sw[] # identity subset
sw[,] # same

sw[NULL] # no columns
sw[,NULL] # no columns
sw[NULL,] # no rows

## select columns
sw[,1:3] # same as above

## select rows and columns
sw[4:5, 1:3]
sw[1] # one-column DataFrame
## the same
sw[, 1, drop = FALSE]
sw[, 1] # a (unnamed) vector
sw[[1]] # the same

sw[["Fert"]] # should return 'NULL'
sw[1,] # a one-row DataFrame
sw[1,, drop=TRUE] # a list

## duplicate row, unique row names are created
sw[c(1, 1:2),]

## indexing by row names  
subsw <- sw[1:5,1:4]
subsw["C",] # partially matches

## row and column names
cn <- paste("X", seq_len(ncol(swiss)), sep = ".")
colnames(sw) <- cn
rn <- seq(nrow(sw))
rownames(sw) <- rn

## column replacement

df[["counts"]] <- counts
df[[3]] <- score
df[[3]] <- NULL # deletion
Documentation reproduced from package S4Vectors, version 0.10.1, License: Artistic-2.0

Community examples

Looks like there are no examples yet.