lengths {base} R Documentation

## Lengths of List or Vector Elements

### Description

Get the length of each element of a list or atomic vector (is.atomic) as an integer or numeric vector.

### Usage

lengths(x, use.names = TRUE)


### Arguments

 x a list, list-like such as an expression or an atomic vector (for which the result is trivial). use.names logical indicating if the result should inherit the names from x.

### Details

This function loops over x and returns a compatible vector containing the length of each element in x. Effectively, length(x[[i]]) is called for all i, so any methods on length are considered.

lengths is generic: you can write methods to handle specific classes of objects, see InternalMethods.

### Value

A non-negative integer of length length(x), except when any element has a length of more than 2^{31}-1 elements, when it returns a double vector. When use.names is true, the names are taken from the names on x, if any.

### Note

One raison d'être of lengths(x) is its use as a more efficient version of sapply(x, length) and similar *apply calls to length. This is the reason why x may be an atomic vector, even though lengths(x) is trivial in that case.

length for getting the length of any R object.

### Examples

require(stats)
## summarize by month
l <- split(airquality$Ozone, airquality$Month)
avgOz <- lapply(l, mean, na.rm=TRUE)
## merge result
airquality$avgOz <- rep(unlist(avgOz, use.names=FALSE), lengths(l)) ## but this is safer and cleaner, but can be slower airquality$avgOz <- unsplit(avgOz, airquality\$Month)

## should always be true, except when a length does not fit in 32 bits
stopifnot(identical(lengths(l), vapply(l, length, integer(1L))))

## empty lists are not a problem
x <- list()
stopifnot(identical(lengths(x), integer()))

## nor are "list-like" expressions:
lengths(expression(u, v, 1+ 0:9))

## and we should dispatch to length methods
f <- c(rep(1, 3), rep(2, 6), 3)
dates <- split(as.POSIXlt(Sys.time() + 1:10), f)
stopifnot(identical(lengths(dates), vapply(dates, length, integer(1L))))


[Package base version 4.3.0 Index]