Antworten:
Abrufen oder Festlegen der Länge von Vektoren (einschließlich Listen) und Faktoren sowie aller anderen R-Objekte, für die eine Methode definiert wurde.
Ermitteln Sie die Länge jedes Elements einer Liste oder eines Atomvektors (is.atomic) als ganzzahligen oder numerischen Vektor.
Hinweis für R
Neulinge wie mich: Vorsicht, das Folgende ist eine Liste eines einzelnen Objekts :
> mylist <- list (1:10)
> length (mylist)
[1] 1
In einem solchen Fall suchen Sie nicht nach der Länge der Liste, sondern nach ihrem ersten Element:
> length (mylist[[1]])
[1] 10
Dies ist eine "wahre" Liste:
> mylist <- list(1:10, rnorm(25), letters[1:3])
> length (mylist)
[1] 3
Es scheint auch, dass R
ein data.frame als Liste betrachtet wird:
> df <- data.frame (matrix(0, ncol = 30, nrow = 2))
> typeof (df)
[1] "list"
In einem solchen Fall könnten Sie interessiert sein ncol()
und nrow()
nicht length()
:
> ncol (df)
[1] 30
> nrow (df)
[1] 2
Funktioniert zwar length()
auch (aber es ist ein Trick, wenn Ihr data.frame nur eine Spalte hat):
> length (df)
[1] 30
> length (df[[1]])
[1] 2
Erstellen wir eine leere Liste (nicht erforderlich, aber gut zu wissen):
> mylist <- vector(mode="list")
Lassen Sie uns ein paar Dinge hineinstecken - 3 Komponenten / Indizes / Tags (wie auch immer Sie es nennen möchten) mit jeweils unterschiedlichen Mengen an Elementen:
> mylist <- list(record1=c(1:10),record2=c(1:5),record3=c(1:2))
Wenn Sie nur an der Anzahl der Komponenten in einer Liste interessiert sind, verwenden Sie:
> length(mylist)
[1] 3
Wenn Sie an der Länge von Elementen in einer bestimmten Komponente einer Liste interessiert sind, verwenden Sie: (beide verweisen hier auf dieselbe Komponente)
length(mylist[[1]])
[1] 10
length(mylist[["record1"]]
[1] 10
Wenn Sie an der Länge aller Elemente in allen Komponenten der Liste interessiert sind, verwenden Sie:
> sum(sapply(mylist,length))
[1] 17
Sie können auch Folgendes verwenden unlist()
, was häufig für die Behandlung von Listen hilfreich ist:
> 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 () ist eine einfache Möglichkeit, auch andere Funktionen in Listen auszuführen, z.
> sum(mylist)
Error in sum(mylist) : invalid 'type' (list) of argument
> sum(unlist(mylist))
[1] 45