首页 > 解决方案 > 通过粘贴字符作为输入来创建函数

问题描述

我想创建一个名称由输入给出的函数。例如,在下面的函数中,我想粘贴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)
}

任何帮助表示赞赏。我试图找到它的解决方案,但我没有成功搜索。

标签: rfunctionpastenames

解决方案


粘贴模型字符串作为后缀,然后粘贴该get名称的函数。

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

match.fun也可以:

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

推荐阅读