如何在使用RScript时调用plot.xts

时间:2013-05-01 12:48:42

标签: r xts

更新:感谢Joshua的评论,我意识到问题不是在函数内部,而是在脚本中。所以我编辑了这个问题并提供了自己的答案。


当我以交互方式使用plot.xts()时,会弹出一个图形窗口。我刚从一个函数内部尝试过它(我正在对一个单元测试进行故障排除并想要一些视觉帮助)但是没有出现。啊哈,我说,我知道诀窍,只需使用print

但是print(plot.xts(x))仍然没有显示图表,而是打印我的xts对象!即它与print(x)完全相同。

我用来运行单元测试的脚本是:

#!/usr/bin/Rscript --slave

library('RUnit')

options(warn=2) #Turn warnings into errors

#By naming the files runit.*.R, and naming the functions test*(), we can use
#    all the defaults to defineTestSuite().
#NOTE: they have a weird default random number generator, so changed here
#    to match the R defaults instead.
test.suite=defineTestSuite('tests',dirs=file.path('tests'),
    rngKind = "Mersenne-Twister", rngNormalKind = "Inversion")

test.result <- runTestSuite(test.suite)

printTextProtocol(test.result)

2 个答案:

答案 0 :(得分:2)

下面的脚本做了两件事:

  • 绘制到设备文件,就像在无头设置(例如网络服务器)中一样,

  • 绘制屏幕设备,我使用x11(),但您可以使用win()

Rscript没有限制。这与xts无关,因为您可以轻松地绘制xts对象。

#!/usr/bin/Rscript

set.seed(42)
x <- cumsum(rnorm(100))

png("/tmp/darren.png")
plot(x)
dev.off()

x11()
plot(x)
Sys.sleep(3)  # could wait for key pressed or ...

答案 1 :(得分:0)

使用RScript时不能使用图形(或readline等输入函数)。但是RScript仍然只是R,所以当你想添加一些交互式的东西时(例如用于故障排除)启动R,然后输入:

source('run_tests.R')

以这种方式运行时,这样的一行显示图表:

plot(x$High);cat("Press a key");readline()

直接从命令行运行./run_tests.R时,该行被静静地忽略。