Betrachten Sie das folgende Skript, das wir Foo.r
nennen werden.
Wenn die erste dummy
-Zeile auskommentiert ist, werden Spalten addiert, und der Code dauert weniger als eine Sekunde, um auf meinem Rechner zu laufen.
Wenn die zweite dummy
-Zeile auskommentiert ist (und die erste in kommentiert ist), addieren wir Zeilen, und die Laufzeit liegt näher bei 30 Sekunden.
Beachten Sie, dass mir die Standard-Summierfunktionen rowSums
und colSums
bekannt sind, aber ich verwende die Summe nur als Beispiel für dieses seltsame asymmetrische Leistungsverhalten.
Dies ist nicht wirklich das Ergebnis von sapply
, es hat vielmehr damit zu tun, wie Datenframes gespeichert werden und welche Implikationen das Extrahieren von Zeilen im Vergleich zu Spalten hat. Datenrahmen werden als Listen gespeichert, wobei jedes Element der Liste eine Spalte ist.
Dies bedeutet, dass das Extrahieren von Spalten einfacher ist als das Extrahieren von Zeilen.
Um zu zeigen, dass dies nichts mit sapply
zu tun hat, betrachten Sie dies mit Ihrem Datenrahmen x
:
Wenn Sie die Dinge zeilenweise und schnell erledigen müssen, sind Datenrahmen oft eine schlechte Wahl. Um in Zeilen arbeiten zu können, muss es entsprechende Elemente aus jedem Listenelement extrahieren. Um Spalten zu bearbeiten, muss es nur durch die Spalten laufen.
Tags und Links r