R的控制流与多个if语句的行为不符

时间:2018-08-14 09:10:41

标签: r control-flow

我用两个连续的if条件在R中编写了以下函数:

f <- function(a) {
  if (a > 10) {
  c <- 'a is greater than 10'
  c
  }
  if (a < 10) {
  c <- 'a is less than 10'
  c 
  } 
}

调用f(1)返回'a小于10',但是调用f(11)返回没有任何结果

我对为什么会这样感到困惑?理论上,两个顺序的if语句应与if-else语句具有相同的效果,但是,如果触发第二个条件而不是第一个条件,则不返回任何输出。我已经尝试过此功能的多种变体,但仍观察到相同的效果。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

在R函数中,返回该函数的上次调用(或return)返回的任何内容。

在您的示例中,如果a < 10,则返回c(如预期)。但是,如果条件a < 10为假,则最后一次调用为if条件-因此什么也不返回。

您可以尝试以下方法来达到目的:

f <- function(a) {
  if (a > 10) {
    c <- 'a is greater than 10'
    print(c)
  }
  if (a < 10) {
    c <- 'a is less than 10'
    print(c) 
  } 
}
f(1)
f(11)