Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@zakkiiii

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

More than 1 year has passed since last update.

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未満でない数値型データである"
2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
zakkiiii
大学院で実証分析やってました。R言語が人並みにはできます。前々から興味があったJavaを独学中です。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?