Date Редакция Категория comp Теги R

Количество элементов в списке, как и вообще в векторе, можно подсчитать с помощью функции 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