bla*_*lah 33 bash statistics charts r
我有许多bash脚本调用R脚本来绘制事物.就像是:
#!/bin/bash
R --vanilla --slave <<RSCRIPT
cat("Plotting $1 to $2\n")
input <- read.table("$1")
png("$2")
plot(as.numeric(input[1,]))
dev.off()
RSCRIPT
Run Code Online (Sandbox Code Playgroud)
问题是尽管如此--slave,dev.off()打印消息的调用null device 1.一旦完成了大量的绘图,或者对于绘制到多个文件的更复杂的脚本,这将成为一个真正的麻烦.
有没有办法压制这个消息?
bla*_*lah 42
无论如何我都知道dev.off(),与设备相关的功能不同,例如png()返回一个值:"新活动设备的数量和名称".这个值正在向stdout回应.
因此可以通过将其放在某处来实现抑制,即,
garbage <- dev.off()
Run Code Online (Sandbox Code Playgroud)
Jou*_*nen 20
关于R的一个好处是你可以查看许多函数的来源:
> dev.off
function (which = dev.cur())
{
if (which == 1)
stop("cannot shut down device 1 (the null device)")
.Internal(dev.off(as.integer(which)))
dev.cur()
}
<environment: namespace:grDevices>
Run Code Online (Sandbox Code Playgroud)
所以它调用.Internal(dev.off(...))然后返回dev.cur(),如果你有几个设备打开,我想这将是有用的,所以你知道哪个设备变为活动状态.你可以.Internal(dev.off(as.integer(dev.cur())))在你的脚本中使用,甚至补丁dev.off只返回其值dev.cur()不是null设备的值,并将补丁发送给R的维护者.
此外,graphics.off()调用dev.off()所有设备,不返回任何内容.
最近遇到同一问题,并注意到此处的答案中未提及另一种可能性:
invisible(dev.off())
Run Code Online (Sandbox Code Playgroud)
dev.off()与将输出分配给garbagevariable:will相比,这将隐藏输出,并且不会创建其他变量garbage <- def.off()。
| 归档时间: |
|
| 查看次数: |
18272 次 |
| 最近记录: |