Создать функцию, вставив символы в качестве входных данных - PullRequest
0 голосов
/ 10 ноября 2019

Я хотел бы создать функцию, имя которой задается вводом. Например, в приведенной ниже функции я хотел бы вставить loglik.tree. с вводимым символом model, поэтому мне не нужно вызывать оператор if для каждого случая. В этом случае переменные loglik.tree.xxx являются функциями.

loglik.tree <- function(model){
  if(model == "rpd"){
    log.lik = loglik.tree.rpd
  }
  if(model == "dd"){
    log.lik = loglik.tree.dd
  }
  if(model == "edd"){
    log.lik = loglik.tree.edd
  }
  if(model == "pd"){ 
    log.lik = loglik.tree.pd
  }
  if(model == "epd"){ 
    log.lik = loglik.tree.epd
  }
  if(model == "gddx"){ 
    log.lik = loglik.tree.gddx
  }
  if(model == "gpdx"){ 
      log.lik = loglik.tree.gpdx
  }
  return(log.lik)
}

Любая помощь приветствуется. Я пытался найти решение для этого, но мне не удалось найти.

1 Ответ

3 голосов
/ 10 ноября 2019

Вставьте строку модели в качестве суффикса, а затем get функцию этого имени.

get(paste0("loglike.tree.", model))

match.fun также будет работать:

match.fun(paste0("loglike.tree.", model))
...