通过粘贴字符作为输入来创建函数

我想创建一个名称由输入指定的函数。例如,在下面的函数中,我想用输入字符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)
}

感谢您的帮助。我试图找到一种解决方案,但是没有成功搜索。

jerry8080 回答:通过粘贴字符作为输入来创建函数

将模型字符串粘贴为后缀,然后get粘贴该名称的功能。

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

match.fun也可以:

match.fun(paste0("loglike.tree.",model))
本文链接:https://www.f2er.com/3128286.html

大家都在问