Warum zeigt die Klasse (data.frame (...)) keine Listenvererbung?

8

Es wird oft gesagt, dass data.frame von list erbt, was angesichts vieler gängiger Paradigmen für den Zugriff auf data.frame-Spalten sinnvoll ist ( $ , sapply , etc.).

Noch "list" gehört nicht zu den Elementen, die in der Klassenliste eines data.frame -Objekts zurückgegeben werden:

%Vor%

Das Herausnehmen von data.frame zeigt, dass es sich um eine Liste handelt:

%Vor%

Und es sieht so aus, als würde die Standardmethode vor der list-Methode aufgerufen werden, wenn es keine data.frame-Methode gibt:

%Vor%

Zwei Fragen dann:

  1. Hat der Fehler, data.frame formell von list zu übernehmen, irgendwelche Vorteile aus einer Design-Perspektive?
  2. Wie verstehen die Funktionen, die data.frame s als Listen zu behandeln scheinen, diese als Listen? Wenn man sich lapply anschaut, sieht es so aus, als ob es ziemlich schnell zu C internem Code geht, also ist es das vielleicht, aber meine Gedanken sind hier ein bisschen verweht.
Ari B. Friedman 26.10.2013, 14:06
quelle

1 Antwort

1

Ich gestehe, dass die Klassen in R auch für mich etwas verwirrend sind. Aber ich erinnere mich, einmal etwas wie "In R data.frames sind eigentlich Listen von Vektoren" zu lesen. Anhand des Codes aus Ihrem Beispiel können wir dies überprüfen:

%Vor%

Beachten Sie, dass wir auch den Operator [[]] verwenden können, um auf die Elemente (Spalten) von dat zuzugreifen. Dies ist der normale Weg, auf Elemente von Listen in R zuzugreifen:

%Vor%

Wir können auch überprüfen, dass jede Spalte tatsächlich ein Vektor ist:

%Vor%     
Ari 21.02.2014 23:26
quelle

Tags und Links