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:
Das Herausnehmen von data.frame
zeigt, dass es sich um eine Liste handelt:
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:
data.frame
formell von list
zu übernehmen, irgendwelche Vorteile aus einer Design-Perspektive? 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. 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:
Wir können auch überprüfen, dass jede Spalte tatsächlich ein Vektor ist:
%Vor%