有没有办法确定函数是否在 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
由于
答案 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()将是例外。
事实上,这表明这个问题不只是有一个真实或错误的答案,而是取决于条件。即使没有打开的设备,某些功能也会绘制某些功能,而如果有其他功能,则其他功能会绘制一些功能。那个案子你想做什么?