This help topic is for R version 1.7.1. For the current version of R, try https://stat.ethz.ch/R-manual/R-patched/library/base/html/Extract.html
Extract {base}R Documentation

Extract or Replace Parts of an Object

Description

Operators act on vectors, arrays, data frames and lists to extract or replace subsets.

Usage

x[i]
x[i, j, ...]
x[i, j, ... , drop=TRUE]
x[[i]]
x[[i, j, ...]]
x$name
.subset(x, ...)
.subset2(x, ...)

Arguments

x

object from which to extract elements

i, j, ..., name

elements to extract or replace. i,j are either numeric or character where name must be character or an (unquoted) name. Numeric values are coerced to integer as by as.integer(i).

drop

For data frames, matrices, and arrays. If TRUE the result is coerced to the lowest possible dimension (see examples below).

Details

If one of these expressions appears on the left side of an assignment then that part of x is set to the value of the right hand side of the assignment.

These operators are generic. You can write methods to handle subsetting of specific classes of objects, see InternalMethods.

The [[ operator requires all relevant subscripts to be supplied. With the [ operator a comma separated blank indicates that all entries in that dimension are selected.

Indexing by factors is allowed and is equivalent to indexing by the numeric codes (see factor) and not by the character values which are printed (for which use [as.character(i)]).

When [.data.frame is used for subsetting rows of a data.frame, it returns a data frame with unique (and non-missing)row names, if necessary transforming the names using make.names( * , unique = TRUE). See the swiss example below.

When operating on a list, the [[ operator gives the specified element of the list while the [ operator returns a list with the specified element(s) in it.

As from R 1.7.0 [[ can be applied recursively to lists, so that if the single index i is a vector of length p, alist[[i]] is equivalent to alist[[i1]]...[[ip]] providing all but the final indexing results in a list.

The operators $ and $<- do not evaluate their second argument. It is translated to a string and that string is used to locate the correct component of the first argument.

The functions .subset and .subset2 are essentially equivalent to the [ and [[ operators, except that methods dispatch does not take place. This is to avoid expensive unclassing in order to apply the default method to an object. They should not normally be invoked by end users.

References

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth \& Brooks/Cole.

See Also

list, array, matrix. factor for the behaviour of [ applied to factors.

Syntax for operator precedence, and the R Language reference manual about indexing details.

Examples

x <- 1:12; m <- matrix(1:6,nr=2); li <- list(pi=pi, e = exp(1))
x[10]                 # the tenth element of x
m[1,]                 # the first row of matrix m
m[1, , drop = FALSE]  # is a 1-row matrix
li[[1]]               # the first element of list li
y <- list(1,2,a=4,5)
y[c(3,4)]             # a list containing elements 3 and 4 of y
y$a                   # the element of y named a

data(swiss)
swiss[ c(1, 1:2), ]   # duplicate row, unique row names

## non-integer indices are truncated:
(i <- 3.999999999) # "4" is printed
(1:5)[i]  # 3

## recursive indexing into lists
z <- list( a=list( b=9, c='hello'), d=1:5)
unlist(z)
z[[c(1, 2)]]
z[[c(1, 2, 1)]]  # both "hello"
z[[c("a", "b")]] <- "new"
unlist(z)

[Package base version 1.7.1 ]