代码之家  ›  专栏  ›  技术社区  ›  csgillespie Carl Witthoft

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

  •  7
  • csgillespie Carl Witthoft  · 技术社区  · 14 年前

    是否有方法确定函数是否在 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 回复  |  直到 13 年前
        1
  •  20
  •   hadley    14 年前
    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() .

        2
  •  0
  •   John    14 年前

    如果出于您的目的,可以在手前关闭所有设备,然后进行检查。设备会很好,因为绘图命令确实会生成新设备。但是,lines()和points()是例外。

    事实上,这表明问题不仅有一个正确或错误的答案,而且取决于条件。有些函数即使没有打开的设备也会绘制某些内容,而另一些函数则会绘制其他内容。在这种情况下你想做什么?