R quantmod包在控制台和TextMate中执行时的行为不同

R quantmod包在控制台和TextMate中执行时的行为不同,r,console,textmate,R,Console,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 (TL

代码如下:

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)
当我使用命令R击键从TextMate运行此文件时,我得到了四个以2 x 2网格排列的图表,正如您从par()函数中所期望的那样。当我从R控制台获取此信息时

> source("~/myChartSeries.r")

我得到每个图表的一个闪光点,最后一个单独描绘。我最后一次听说chartSeries()与par()函数不兼容,但chart_Series()与par()函数兼容。因此,控制台的行为并不令人惊讶。但为什么TextMate的执行会起作用?chartSeries()是否与par()兼容?R控制台的执行是否有缺陷?

当代码从TextMate运行时,它会分别打印所有四个图表,并带有“错觉”,即它是一个带有四个面板的单一图表。事实上,当我注释掉par()函数时

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

我得到了同样的结果。因此,chartSeries()似乎仍然不符合par()。

这在任何位置都适用:

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)

希望这能有所帮助。

当我在R中运行代码时,无论是直接在控制台中运行代码还是从
source()运行代码,我都不会在一个页面上看到四个面板。
是的,在控制台中运行代码和使用source()是一样的。我应该更清楚地说“通过source()函数从控制台”。谜团是为什么它在文本编辑器(如TextMate)中运行时可以工作。因此,您的编辑器设置了一个稍微不同的环境。把你的屁股放在椅子上,开始比较。代码是确定性的,这将是您的本地设置驱动的。请注意。以你希望别人对你一样的尊重对待别人。我们都是来一起学习的。宽容那些可能不知道你所知道的一切的人。带上你的幽默感。把你的屁股放在椅子上是一句经典的名言,我们大多数读过研究生的人都会在毕业论文刚开始时听到这句话。这是相似的:你的代码,你的交易模型,你的调试工作。你必须明白,当我们指出不该看的地方时,我们仍然会帮助你。