Количество элементов в списке, как и вообще в векторе, можно подсчитать с помощью функции length()
> mylist <- list(1:10)
> length (mylist)
[1] 1
Это выглядит странно: похоже, будто длина списка из 10 чисел равна 1. Это, разумеется не так. Чтобы понять, что здесь происходит, рассмотрим более сложный список, состоящий из чисел и символов
> mylist <- list(1:10,letters[1:3])
> length (mylist)
[1] 2
Список mylist
состоит из двух объектов -- списка чисел и списка символов:
> str(list(1:10,letters[1:3]))
List of 2
$ : int [1:10] 1 2 3 4 5 6 7 8 9 10
$ : chr [1:3] "a" "b" "c"
Вот, например, список символов из mylist
:
> str(mylist[2])
List of 1
$ : chr [1:3] "a" "b" "c"
Таким образом, в случае списка функция length()
возвращает нам число объектов, из которых он состоит. В нашем случае таких объектов два. Другое дело, что каждый из этих объектов в свою очередь является списком, состоящим из последовательностей чисел и символов. И вот чтобы докопаться до этих "внутренних" последовательностей и узнать их длину, нужно применить двойные квадратные скобки [[]]
> str(mylist[[2]])
chr [1:3] "a" "b" "c" # уже не список
> length(mylist[[2]])
[1] 3
Теперь можно вернуться и исправить наш первый пример
> mylist <- list(1:10)
> length (mylist[[1]])
[1] 10
Комментарии
comments powered by Disqus