Extract {base} | R Documentation |
Operators act on vectors, arrays, data frames and lists to extract or replace subsets.
x[i]
x[i, j, ...]
x[i, j, ... , drop=TRUE]
x[[i]]
x[[i, j, ...]]
x$name
.subset(x, ...)
.subset2(x, ...)
x |
object from which to extract elements |
i , j , ... , name |
elements to extract or replace. |
drop |
For data frames, matrices, and arrays. If |
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.
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth \& Brooks/Cole.
list
, array
, matrix
.
factor
for the behaviour of [
applied to factors.
Syntax
for operator precedence, and the
R Language reference manual about indexing details.
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)