Ich möchte eine lange Reihe von qplots
oder ggplot2
Plots durchlaufen, die bei jeder Pause stehen bleiben, damit ich sie untersuchen kann, bevor ich weitermache.
Der folgende Code erzeugt keine Plots:
%Vor%Aber wenn ich diese Zeile nach dem Ausführen der Schleife ausführen, bekomme ich ein Diagramm:
%Vor%Was ist der Grund für dieses Verhalten? Wie zeige ich die Diagramme innerhalb der Schleife an?
Nachverfolgung:
Gibt es einen eleganteren Weg, um die Variablen zu durchlaufen als mit mtcars[,Var]
und xlab=Var
?
Wie die anderen Antworten schon gesagt haben, umschließen Sie jeden qplot()
-Aufruf in print()
(das ist R FAQ 7.22 ). Der Grund dafür ist, dass ggplots nicht auf das Grafikgerät gedruckt werden, bis print.ggplot
für sie aufgerufen wird. print()
ist eine generische Funktion, die hinter den Kulissen an print.ggplot
versendet.
Wenn Sie im repl arbeiten ("read-evaluate-print loop", alias shell), wird der Rückgabewert der vorherigen Eingabezeile automatisch über einen impliziten Aufruf von print()
ausgegeben. Deshalb
qplot(mtcars[,Var], wt, data=mtcars, xlab=Var)
funktioniert für Sie. Es hat nichts mit Scope oder der for-Schleife zu tun. Wenn Sie diese Zeile irgendwo anders platzieren würden, die nicht direkt zum repl zurückkehrt, wie in einer Funktion, die etwas anderes zurückgibt, würde das nichts tun.
Ich habe kürzlich etwas Ähnliches gemacht und dachte, ich würde zwei zusätzliche Bits Code erwähnen, die geholfen haben. Ich habe diese Zeile in die for-Schleife eingefügt, um R für einen Moment (in diesem Fall eine halbe Sekunde) nach dem Drucken jedes Plots anzuhalten:
%Vor%Alternativ können Sie die Plots nicht nur auf dem Bildschirm anzeigen, sondern auch direkt in Dateien speichern und dann in Ruhe durchsuchen. Oder in meinem Fall habe ich versucht, die Flugbahn einer Biene, die wir verfolgten, zu animieren, also importierte ich die Bildsequenz in ImageJ und speicherte sie als animiertes GIF.
%Vor%