2009-11-16 22 views

Antwort

128
+15

'Längen (x)' (der Plural beachten) wird die Länge jedes Elements in der Liste zurück . – AleRuete

+2

@AleRuete: Sie sollten dies als Antwort hinzufügen! Es ist sehr nützlich! –

+3

danke @SeanStayn aber die Frage ist geschlossen. – AleRuete

10

Ich habe schon versucht, dies herauszufinden, aber es ist ganz einfach! Sie können length(·) verwenden. length(mylist) wird Ihnen die Anzahl der Objekte mylist enthält.

... und mir wurde klar, dass schon jemand darauf geantwortet hatte - Entschuldigung!

+1

Es ist immer noch eine Antwort, und immer noch eine gültige, also +1. – PaulHurleyuk

66

Tipps für R Neulinge wie mich: Vorsicht, ist die folgende eine Liste von ein einzelnes Objekt:

> mylist <- list (1:10) 
> length (mylist) 
[1] 1 

In einem solchen Fall sind Sie nicht für die Länge der Liste suchen, aber der erstes Element:

> length (mylist[[1]]) 
[1] 10 

Dies ist ein "true" -Liste:

> mylist <- list(1:10, rnorm(25), letters[1:3]) 
> length (mylist) 
[1] 3 

Auch scheint es, dass R eine data.frame als Liste betrachtet:

> df <- data.frame (matrix(0, ncol = 30, nrow = 2)) 
> typeof (df) 
[1] "list" 

In einem solchen Fall, dass Sie eher in ncol() und nrow() interessiert sein als length():

> ncol (df) 
[1] 30 
> nrow (df) 
[1] 2 

Obwohl length() wird auch funktionieren (aber es ist ein Trick, wenn Ihre Daten.Rahmen hat nur eine Spalte):

> length (df) 
[1] 30 
> length (df[[1]]) 
[1] 2 
7

Lassen Sie uns eine leere Liste erstellen (nicht erforderlich, aber gut zu wissen):

> mylist <- vector(mode="list") 

Lassen Sie uns ein paar Sachen setzen in ihm - 3 Komponenten/Indizes/Tags (was auch immer Sie es nennen wollen), die jeweils mit Mengen von Elementen unterschiedlicher:

> mylist <- list(record1=c(1:10),record2=c(1:5),record3=c(1:2)) 

Wenn Sie in nur die Anzahl der Komponenten, die in einer Liste mit Interesse:

> length(mylist) 
[1] 3 

Wenn Sie in der Länge der Elemente in einer bestimmten Komponente einer Liste Verwendung Interesse: (beide verweisen auf die gleiche Komponente hier)

length(mylist[[1]]) 
[1] 10 
length(mylist[["record1"]] 
[1] 10 

Wenn Sie in der Länge aller Elemente in alle interessiert sind Komponenten der Liste Verwendung:

> sum(sapply(mylist,length)) 
[1] 17 
3

Sie auch unlist() verwenden können, die für den Umgang mit Listen oft nützlich 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 

fehlenden oder() ist eine einfache Art und Weise auf Listen andere Funktionen auszuführen als auch, wie beispielsweise:

> sum(mylist) 
Error in sum(mylist) : invalid 'type' (list) of argument 

> sum(unlist(mylist)) 
[1] 45 
Verwandte Themen