Подсчитать количество объектов в списке [закрыто]

99

Функция R, которая вернет количество элементов в списке?

Карл
источник

Ответы:

170

длина (х)

Получить или установить длину векторов (включая списки) и факторов, а также любого другого объекта R, для которого был определен метод.

длины (x)

Получите длину каждого элемента списка или атомарного вектора (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.

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

анон
источник
10

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

> 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
user6062513
источник