# lengths

##### Lengths of List or Vector Elements

Get the length of each element of a `list`

or atomic
vector (`is.atomic`

) as an integer or numeric vector.

- Keywords
- attribute

##### 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.

##### 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'<U+00EA>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.

##### See Also

`length`

for getting the length of any R object.

##### Examples

`library(base)`

```
# NOT RUN {
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))))
# }
```

*Documentation reproduced from package base, version 3.6.1, License: Part of R 3.6.1*