R Как проверить, является ли ввод определенной функцией - PullRequest
0 голосов
/ 25 июня 2018

У меня есть функция, которая принимает ввод функции.

 myfunc <- function(FUN){}

Там я хочу проверить, является ли FUN mean, и выполнить еще одну задачу

 myfunc <- function(FUN){
      ``some tasks here``
      if(FUN==mean){``some more task here``} # this FUN==mean is not valid
 }

Однако, похоже, что FUN нельзя сравнивать с этим способом.Есть ли способ проверить, вводится ли определенная функция?

1 Ответ

0 голосов
/ 25 июня 2018

Использует checkmate::assert_function() для дополнительной безопасности.

myfunc <- function(FUN){
  checkmate::assert_function(mean)

  if( identical(FUN, base::mean) ){
    return( TRUE )
  } else {
    return( FALSE )
  }
}

myfunc(mean)    # TRUE
myfunc(meanie)  # FALSE

Этот ТАК вопрос предлагает substitute() и альтернативные решения в несколько более сложныхсценарий.

edit : следовал совету @ spacedman и заменил substitute(FUN) == "mean" внутри условия if, чтобы сделать его более устойчивым (особенно в отношении социопатов, которые называют свою функцию mask base::mean()).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...