Funkcja R, która zwróci liczbę elementów na liście?
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ę.
Uzyskaj długość każdego elementu listy lub wektora atomowego (is.atomic) jako wektor całkowity lub numeryczny.
Rada dla R
nowoprzybył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 R
traktuje 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
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 mylist
zawiera.
... i właśnie zdałem sobie sprawę, że ktoś już na to odpowiedział - przepraszam!
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
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