在以下两种情况下放置if语句的最佳方法是什么?

时间:2019-04-16 07:59:39

标签: r function if-statement

在R的以下两种情况下放置if语句的最佳方法是什么?这两个答案都是正确的。

场景1

    pow_one <- function(x, print_info = TRUE) {
      y <- x ^ 2
      if (print_info) {
        print(paste(x, "to the power two equals", y))
      }
      return(y)    
    }

场景2

pow_two <- function(x, print_info = TRUE) {
  if (print_info) {
    y <- x ^ 2
    print(paste(x, "to the power two equals", y))
    return(y)
  }
}

1 个答案:

答案 0 :(得分:1)

您认为这两个功能相同,但实际上并不相同。仅当print_infoTRUE时,它们的行为相同。

考虑这种情况

pow_one(3, FALSE)
#[1] 9

pow_two(3, FALSE)

pow_one返回9,而pow_two不返回任何内容,因为您的return位于if的{​​{1}}块中,我认为这不是您的预期行为。 “最佳”是主观的,但是IMO pow_twopow_one要好,因为无论是否打印,pow_two return都受{{1}控制}。此外,最好具有一致的功能行为。它应该始终返回值,或者永远不返回值。