制御構文

if

if (条件) {真の場合の式} else {偽の場合の式}
ifは単一の条件のみを受け付けるのでベクトルの場合エラーが発生する。

x <- 4
y <- 2
z <- c(6,8)
if (x > y) x else y
## [1] 4
# ベクトル演算はできないのでエラー
if (x > z) x else z
## Warning in if (x > z) x else z: 条件が長さが 2 以上なので、最初の 1 つだけ
## が使われます
## [1] 6 8

&&, || (短絡評価)

&&(かつ): 左辺の評価がTRUEの時に、右辺を評価する。 左辺がFALSEであれば、全体の式はFALSEになる。
||(または): 左辺の評価がFALSEの時に、右辺を評価する。 左辺がTRUEであれば、全体の式はTRUEになる。

c <- 2
d <- 4
if(c == 2 && d == 4) "good" else "NG"
## [1] "good"
if(c == 4 && d == 4) "good" else "NG"
## [1] "NG"
if(c == 2 || d == 4) "good" else "NG"
## [1] "good"
if(c == 4 || d == 4) "good" else "NG"
## [1] "good"

for

ループ処理 上限値を設定して繰り返す。

for (i in seq(from=2, to=10, by=2)) {print(i)}
## [1] 2
## [1] 4
## [1] 6
## [1] 8
## [1] 10

while

ループ処理 ある条件に対して合致するまで繰り返す。

i <- 2
while (i <= 10) {
  print(i)
  i <- i + 2
  }
## [1] 2
## [1] 4
## [1] 6
## [1] 8
## [1] 10

next, break

ループ処理で条件によりスキップと中止を対応する。

# next
for(n in 1:5) {
  if(n == 4) next
  cat(n)
}
## 1235
# break
for(n in 1:5) {
  if(n == 4) break
  cat(n)
}
## 123

swith

条件分岐

switch(1, "big", "small")
## [1] "big"
switch(1, a={"big"}, b={"small"})
## [1] "big"
switch("b", a={"big"}, b={"small"})
## [1] "small"

ifelse

ifelse(条件, TRUE, FALSE)

ifelse(c(TRUE, FALSE), c(1,2), c(3,4))
## [1] 1 4
最終更新日:2016/04/27

copyrigth © 2016 r-beginners.com All rigths reserved.

PAGE TOP ▲