Порахувати кількість об'єктів у списку [закрито]


99

R функція, яка поверне кількість елементів у списку?

Відповіді:


170

довжина (х)

Отримати або встановити довжину векторів (включаючи списки) та факторів, а також будь-якого іншого об'єкта R, для якого визначено метод.

довжини (х)

Отримайте довжину кожного елемента списку або атомного вектора (is.atomic) у вигляді цілого чисельного вектора.


85

Поради для Rновачків, таких як я: будьте уважні, подано список одного об’єкта  :

> mylist <- list (1:10)
> length (mylist)
[1] 1

У такому випадку ви шукаєте не довжину списку, а його перший елемент:

> length (mylist[[1]])
[1] 10

Це "справжній" список:

> mylist <- list(1:10, rnorm(25), letters[1:3])
> length (mylist)
[1] 3

Крім того, схоже, що RData.frame розглядає як список:

> df <- data.frame (matrix(0, ncol = 30, nrow = 2))
> typeof (df)
[1] "list"

В такому випадку ви можете бути зацікавлені в ncol()і nrow()замість length() :

> ncol (df)
[1] 30
> nrow (df)
[1] 2

Хоча length()це також спрацює (але це хитрість, коли у вашому data.frame є лише один стовпець):

> length (df)
[1] 30
> length (df[[1]])
[1] 2

12

Я витратив віки, намагаючись зрозуміти це, але це просто! Можна використовувати length(·). length(mylist)підкаже, яку кількість об'єктів mylistмістить.

... і щойно зрозумів, що хтось уже відповів на це- вибачте!


9

Створимо порожній список (не потрібно, але добре знати):

> mylist <- vector(mode="list")

Давайте вкладемо в нього деякі речі - 3 компоненти / індекси / теги (як би ви хотіли це назвати), кожен з різною кількістю елементів:

> mylist <- list(record1=c(1:10),record2=c(1:5),record3=c(1:2))

Якщо вас цікавить лише кількість компонентів у списку, використовуйте:

> length(mylist)
[1] 3

Якщо вас цікавить довжина елементів у певному компоненті списку, використовуйте: (обидва посилаються на один і той же компонент тут)

length(mylist[[1]])
[1] 10
length(mylist[["record1"]]
[1] 10

Якщо вас цікавить довжина всіх елементів у всіх компонентах списку, використовуйте:

> sum(sapply(mylist,length))
[1] 17

7

Ви також можете використовувати unlist(), що часто корисно для обробки списків:

> mylist <- list(A = c(1:3), B = c(4:6), C = c(7:9))

> mylist
$A
[1] 1 2 3

$B
[1] 4 5 6

$C
[1] 7 8 9

> unlist(mylist)
A1 A2 A3 B1 B2 B3 C1 C2 C3 
 1  2  3  4  5  6  7  8  9 

> length(unlist(mylist))
[1] 9

unlist () - це простий спосіб виконання інших функцій у списках, таких як:

> sum(mylist)
Error in sum(mylist) : invalid 'type' (list) of argument

> sum(unlist(mylist))
[1] 45
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.