Policz liczbę obiektów na liście [zamknięte]

Odpowiedzi:

170

długość (x)

Pobierz lub ustaw długość wektorów (w tym list) i współczynników oraz dowolnego innego obiektu języka R, dla którego zdefiniowano metodę.

długości (x)

Uzyskaj długość każdego elementu listy lub wektora atomowego (is.atomic) jako wektor całkowity lub numeryczny.

Joey
źródło
85

Rada dla Rnowoprzybyłych, takich jak ja: uwaga, poniżej znajduje się lista pojedynczego obiektu  :

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

W takim przypadku nie szukasz długości listy, ale jej pierwszego elementu:

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

To jest „prawdziwa” lista:

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

Wydaje się również, że Rtraktuje data.frame jako listę:

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

W takim przypadku możesz być zainteresowany ncol()i nrow()zamiast length() :

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

Chociaż length()również zadziała (ale to sztuczka, gdy data.frame ma tylko jedną kolumnę):

> length (df)
[1] 30
> length (df[[1]])
[1] 2
Skippy le Grand Gourou
źródło
12

Spędziłem całe wieki, próbując to rozgryźć, ale jest to proste! Możesz użyć length(·). length(mylist)powie ci, ile obiektów mylistzawiera.

... i właśnie zdałem sobie sprawę, że ktoś już na to odpowiedział - przepraszam!

zaraz
źródło
9

Stwórzmy pustą listę (nie jest to wymagane, ale dobrze wiedzieć):

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

Dodajmy do tego trochę rzeczy - 3 komponenty / indeksy / tagi (jakkolwiek chcesz to nazwać), każdy z inną ilością elementów:

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

Jeśli interesuje Cię tylko liczba komponentów na liście, użyj:

> length(mylist)
[1] 3

Jeśli interesuje Cię długość elementów w określonym komponencie listy, użyj: (oba odnoszą się tutaj do tego samego komponentu)

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

Jeśli interesuje Cię długość wszystkich elementów we wszystkich składnikach listy użyj:

> sum(sapply(mylist,length))
[1] 17
Jeff Kraus
źródło
7

Możesz także użyć unlist(), co jest często przydatne do obsługi list:

> 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 () to prosty sposób wykonywania innych funkcji na listach, takich jak:

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

> sum(unlist(mylist))
[1] 45
user6062513
źródło