更新:感谢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)
下面的脚本做了两件事:
-
绘制到设备文件,就像你在web服务器等无标题设置中所做的那样,
-
绘制屏幕设备,我使用
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 ...
使用RScript时不能使用图形(或然而,RScript仍然只是R,所以当你想添加一些交互式的东西(例如用于故障排除)时,启动R,然后键入:readline
等输入函数)。
source('run_tests.R')
当以这种方式运行时,像这样的一行显示图表:
plot(x$High);cat("Press a key");readline()
当使用./run_tests.R
直接从命令行运行时,该行会被忽略。