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.


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

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!


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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.