2010-12-07 8 views
0

Hier ist der Code:R quantmod Paket verhält sich anders, wenn von der Konsole ausgeführt im Vergleich von Textmate

require("quantmod") 

getSymbols("GLD") 
getSymbols("SLV") 
getSymbols("TLT") 

GSR = GLD/SLV 

par(mfrow=c(2,2)) 

chartSeries (GLD, subset="2010", TA = NULL)    
chartSeries (SLV, subset="2010", TA = NULL)    
chartSeries (TLT, subset="2010", TA = NULL)    
chartSeries (GSR, subset="2010", TA = NULL) 

Wenn ich diese Datei von Textmate mit dem Befehl R Tastendruck ausführen, bekomme ich vier Diagramme in einem 2 x ausgekleidet 2 Gitter, wie Sie es von der Funktion par() erwarten würden. Als ich dies von der R-Konsole beziehen,

> source("~/myChartSeries.r") 

bekomme ich einen Blitz jedes Diagramm mit der letzten allein dargestellt. Das letzte, das ich gehört hatte, war chartSeries() nicht kompatibel mit der Funktion par(), aber chart_Series() ist. So ist das Verhalten der Konsole nicht überraschend. Aber warum funktioniert die Ausführung von TextMate? Ist chartSeries() par() -konform gemacht worden und ist die Ausführung der R-Konsole fehlerhaft?

+0

Wenn ich diesen Code in RI laufe ** do ** nicht vier Platten auf einer Seite erhalten, unabhängig davon, ob ich den Code direkt in einer Konsole oder von 'Quelle ausführen()' –

+0

Ja, in einer Konsole und mit Quelle () ist das Gleiche. Ich sollte klarer sein und 'von der Konsole aus über die source() - Funktion sagen.' Das Geheimnis ist, warum es funktioniert, wenn es von einem Texteditor wie TextMate ausgeführt wird. – Milktrader

+1

Ihr Editor richtet also eine etwas andere Umgebung ein. Leg deinen Arsch auf deinen Stuhl und fang an zu vergleichen. Code ist deterministisch, und es ** wird Ihr lokales Setup ** sein, das dies antreibt. –

Antwort

1

Wenn der Code von TextMate ausgeführt wird, druckt er alle vier Diagramme separat mit der "Illusion", dass es ein einzelnes Diagramm mit vier Panels ist. In der Tat, wenn ich die par() -Funktion,

#par(mfrow=c(2,2)) 

kommentieren, bekomme ich das gleiche Ergebnis. So scheint es, dass chartSeries() immer noch nicht par() konform ist.

1

funktioniert dies für mich entweder Standort:

layout(matrix(seq(4), nrow=2)) 

chartSeries (GLD, subset="2010", TA = NULL, layout=NULL)    
chartSeries (SLV, subset="2010", TA = NULL, layout=NULL)    
chartSeries (TLT, subset="2010", TA = NULL, layout=NULL)    
chartSeries (GSR, subset="2010", TA = NULL, layout=NULL) 

Hoffnung, das hilft.

Verwandte Themen