Função R que retornará o número de itens em uma lista?
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.
Obtenha o comprimento de cada elemento de uma lista ou vetor atômico (is.atomic) como um inteiro ou vetor numérico.
Conselho para R
iniciantes 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 R
considera 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
Passei muito tempo tentando descobrir isso, mas é simples! Você pode usar length(·)
. length(mylist)
lhe dirá o número de objetos que mylist
contém.
... e acabei de perceber que alguém já havia respondido isso- desculpe!
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
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