Odpowiedzi:
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 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
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