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)
我在 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)