Как я могу определить, генерирует ли функция график

Существует ли способ определить, генерирует ли функция число в 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

Спасибо

7
задан csgillespie 30 April 2010 в 09:15
поделиться

2 ответа

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().

20
ответ дан 6 December 2019 в 09:18
поделиться

Если для ваших целей можно заранее отключить все устройства, тогда проверка .Devices будет хорошей, потому что тогда команды построения создают новое устройство. Но тогда lines () и points () будут исключениями.

Фактически, это говорит о том, что вопрос не просто имеет верный или ложный ответ, но зависит от условий. Некоторые функции будут рисовать что-то, даже если нет открытого устройства, в то время как другие будут рисовать что-то, если есть что-то еще нарисованное. Что бы вы хотели сделать в этом случае?

0
ответ дан 6 December 2019 в 09:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: