Contar o número de objetos na lista [fechada]

99

Função R que retornará o número de itens em uma lista?

Karl
fonte

Respostas:

170

comprimento (x)

Obtenha ou defina o comprimento de vetores (incluindo listas) e fatores, e de qualquer outro objeto R para o qual um método tenha sido definido.

comprimentos (x)

Obtenha o comprimento de cada elemento de uma lista ou vetor atômico (is.atomic) como um inteiro ou vetor numérico.

Joey
fonte
85

Conselho para Riniciantes como eu: cuidado, o que se segue é uma lista de um único objeto  :

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

Nesse caso, você não está procurando o comprimento da lista, mas de seu primeiro elemento:

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

Esta é uma lista "verdadeira":

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

Além disso, parece que Rconsidera um data.frame como uma lista:

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

Nesse caso, você pode estar interessado em ncol()e em nrow()vez de length() :

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

Embora length()também funcione (mas é um truque quando seu data.frame tem apenas uma coluna):

> length (df)
[1] 30
> length (df[[1]])
[1] 2
Skippy le Grand Gourou
fonte
12

Passei muito tempo tentando descobrir isso, mas é simples! Você pode usar length(·). length(mylist)lhe dirá o número de objetos que mylistcontém.

... e acabei de perceber que alguém já havia respondido isso- desculpe!

anon
fonte
9

Vamos criar uma lista vazia (não obrigatória, mas é bom saber):

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

Vamos colocar algumas coisas nele - 3 componentes / índices / tags (como você quiser chamá-lo), cada um com diferentes quantidades de elementos:

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

Se você estiver interessado apenas no número de componentes em uma lista, use:

> length(mylist)
[1] 3

Se você estiver interessado no comprimento dos elementos em um componente específico de uma lista, use: (ambos fazem referência ao mesmo componente aqui)

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

Se você estiver interessado no comprimento de todos os elementos em todos os componentes da lista, use:

> sum(sapply(mylist,length))
[1] 17
Jeff Kraus
fonte
7

Você também pode usar unlist(), o que geralmente é útil para lidar com listas:

> 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 () é uma maneira simples de executar outras funções em listas também, como:

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

> sum(unlist(mylist))
[1] 45
user6062513
fonte