当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R lengths 列表或向量元素的长度


R语言 lengths 位于 base 包(package)。

说明

获取 list 或原子向量 ( is.atomic ) 的每个元素的长度作为整数或数值向量。

用法

lengths(x, use.names = TRUE)

参数

x

list 、 list-like 例如 expression 或原子向量(对于其结果是微不足道的)。

use.names

逻辑指示结果是否应从 x 继承 names

细节

此函数循环 x 并返回一个兼容向量,其中包含 x 中每个元素的长度。实际上,length(x[[i]]) 被所有 i 调用,因此 length 上的任何方法都会被考虑。

lengths 是通用的:您可以编写方法来处理特定类的对象,请参阅 InternalMethods

长度为 length(x) 的非负 integer,但任何元素的长度超过 元素时除外,当它返回双向量时。当 use.names 为 true 时,名称取自 x 上的名称(如果有)。

注意

lengths(x) 存在的理由之一是它用作 sapply(x, length) 的更高效版本,以及对 length 的类似 *apply 调用。这就是为什么 x 可能是原子向量的原因,尽管 lengths(x) 在这种情况下是微不足道的。

例子

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))))

也可以看看

length获取任意长度R对象。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Lengths of List or Vector Elements。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。