如何确定函数是否生成图形

时间:2010-04-30 09:15:38

标签: graphics r

有没有办法确定函数是否在 R 中生成数字?

例如,如果我们有函数 f g

f = function(x,y){plot(x,y)}
g = function(x,y){mean(x*y)}

我想能够运行

createFigure(f(x,y))#Returns TRUE
createFigure(g(x,y))#Returns FALSE

由于

2 个答案:

答案 0 :(得分:20)

makes_plot <- function(x) {
  before <- .Internal(getSnapshot())
  force(x)
  after <- .Internal(getSnapshot())
  !identical(before, after)
}

makes_plot(mean(1:10))
makes_plot(plot(1:10))

通过查看.getSnapshot的来源发现了recordPlot()函数。

答案 1 :(得分:0)

如果出于您的目的,可以手动关闭所有设备,然后检查。设备会很好,因为然后绘制命令会创建一个新设备。但是然后lines()和points()将是例外。

事实上,这表明这个问题不只是有一个真实或错误的答案,而是取决于条件。即使没有打开的设备,某些功能也会绘制某些功能,而如果有其他功能,则其他功能会绘制一些功能。那个案子你想做什么?