Подсчитать количество объектов в списке

Кто-нибудь знает функцию R, которая вернет количество элементов в списке?

Ответ 2

Совет для 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

Кроме того, кажется, что R рассматривает data.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

Ответ 3

Я потратил годы, пытаясь понять это, но это просто! Вы можете использовать length(·). length(mylist) сообщит вам, сколько объектов mylist содержит.

... и просто понял, что кто-то уже ответил на это - извините!

Ответ 4

Позвольте создать пустой список (не обязательно, но полезно знать):

> 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

Ответ 5

Вы также можете использовать 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