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

99

R-Funktion, die die Anzahl der Elemente in einer Liste zurückgibt?

Karl
quelle

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.

Joey
quelle
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
Skippy le Grand Gourou
quelle
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!

anon
quelle
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
Jeff Kraus
quelle
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
user6062513
quelle