r语言 - 如何调用plot.使用RScript时



更新:感谢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时不能使用图形(或readline等输入函数)。然而,RScript仍然只是R,所以当你想添加一些交互式的东西(例如用于故障排除)时,启动R,然后键入:

source('run_tests.R')

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

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

当使用./run_tests.R直接从命令行运行时,该行会被忽略。

最新更新