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

Control flow for R does not behave as expected with multiple if statements

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

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) returns 'a is less than 10',然而,调用 f(11) returns nothing

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

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

在您的示例中,if a < 10 then 返回 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)