如何在R

时间:2018-02-15 11:46:54

标签: r

如何根据family类正确编写案例陈述。我目前按字符串匹配,但是这样做的正确方法是什么。

gigl <- function(family = poisson()){

  if (family == "binomial"){
  print(1)}

  else if(family == "guassian"){
  print(2)}

  else {
  print(3)}
}

输出应为

> gigl(family = poisson())
3

> gigl(family = binomial())
1

> gigl(family =  gaussian())
2

1 个答案:

答案 0 :(得分:2)

您可以使用switch语句:

gigl <- function(family = poisson()){
  x <- switch(family$family,
              binomial = 1,
              gaussian = 2,
              3)
} 

您可能更喜欢dplyr::case_when

gigl2 <- function(family = poisson()){
  dplyr::case_when(family$family == 'binomial' ~ 1,
                   family$family == 'gaussian' ~ 2,
                   TRUE ~ 3)
}

结果:

gigl(family = poisson())
# [1] 3

gigl(family = binomial())
# [1] 1

gigl(family =  gaussian())
# [1] 2

gigl2(family = poisson())
# [1] 3

gigl2(family = binomial())
# [1] 1

gigl2(family =  gaussian())
# [1] 2