當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。