LoginSignup
1
2

More than 3 years have passed since last update.

【R】 意外と知らなかったif false

Last updated at Posted at 2020-02-12

if falseの実装(真偽式のある場合)

条件式をif構文に直接記述する場合、!=のように否定演算子!を使えばいいのは有名だが、

> if(1 != 2) {
    print("FALSE")
  }
[1] "FALSE"

こういう書き方もできる。

> if(!(1 == 2)) {
    print("FALSE")
  }
[1] "FALSE"

さらに、この書き方でもやってることは一緒である。

> if((1 == 2) == FALSE) {
    print("FALSE")
  }
[1] "FALSE"

if falseの実装(logical型データの場合)

論理型データに直接否定演算子!を付することでスマートに記述できる。

> logi <- FALSE
> if(!logi) {
    print("FALSE")
  }
[1] "FALSE"

より直感的な記述法を使うこともできる。

> logi <- FALSE
> if(logi == FALSE) {
    print("FALSE")
  }
[1] "FALSE"

さらに、真偽式の場合も同様に!=を使うことができる。

> logi <- FALSE
> if(logi != TRUE) {
    print("FALSE")
  }
[1] "FALSE"

より複雑な判定式(複数条件)

条件式が複雑になり、さらにif falseを組み合わせるとなれば、さらにスマートに書く必要がある。
そこで、判定式の結果をlogical型データとしてオブジェクトに保存して、それに対して否定演算子!を直接付するほうが、コードを見返すときや修正するときに便利である。

num <- 100

logi.range <- 0 <= num && num < 1     # 0以上1未満の判定
logi.not.numeric <- !is.numeric(num)     # 数値型以外=TRUE
logi2 <- logi.range || logi.not.numeric  # 数値型以外または0以上1未満 = TRUE, 数値型で0~1に含まれていない = FALSE

if(!logi2) {
  print("numは0以上1未満でない数値型データである")
}
[1] "numは0以上1未満でない数値型データである"
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2