Anzahl der Objekte in der Liste zählen [geschlossen]


Antworten:


170

Länge (x)

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.

Längen (x)

Ermitteln Sie die Länge jedes Elements einer Liste oder eines Atomvektors (is.atomic) als ganzzahligen oder numerischen Vektor.


85

Hinweis für RNeulinge 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 Rein 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

12

Ich habe ewig versucht, das herauszufinden, aber es ist einfach! Sie können verwenden length(·). length(mylist)zeigt Ihnen die Anzahl der enthaltenen Objekte mylist.

... und habe gerade gemerkt, dass jemand bereits darauf geantwortet hat - sorry!


9

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

7

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.