Category Archives: programming

if & else – flow control “IF” & “ELSE”

if & else – flow control “IF” & “ELSE”
使用例1: if(expression){rcmd}
概要1: expressionが満たされるとrcmdが実行される
使用例2: if(expression){rcmd1} else {rcmd2}
概要2: expressionが満たされるとrcmd1が実行され、満たされないとrcmd2が実行される
関連: for, while, else, break, repeat, length,

# usage #
if (expression) {
  rcmd
}
# and/or
if (expression) {
  rcmd1
  } else {rcmd2
}

##### ----- examples ----- #####
# 正規分布に従う乱数を1000個発生させ、最大値が3以上であるか調べる#
> rn=rnorm(1000)
> if (max(rn)>=3) {
+   print("maximum is larger than or equal to 3")
+ } else { print("maximum is less than 3")
+ }
[1] "maximum is larger than or equal to 3"
##### ----- end examples ----- #####

while – flow control “WHILE”

while – flow control “WHILE”
使用例: while(expression){rcmd}
目的: rcmdをexpressionが満たされる限り繰り返す(繰り返す条件が決まっている場合)
関連: for, if, break, repeat, length, if

# usage #
while (expression) {
  rcmd
}

##### ----- examples ----- #####
# 正規分布に従う乱数を発生させ、3以上の数値が出た場合に #
# その数値と繰り返し回数を表示する                    #
> rn=0;counter=0;
> while (rn<3) {
+  counter=counter+1
+  rn=rnorm(1)
+ }
> print(c(rn, counter))
[1]    3.1233 1461.0000

# 終了条件は明確だが、繰り返し回数の上限を設定する例   #
# 例1と同じ内容だが、繰り返しの上限を500とする       #
> rn=0;counter=0;maxItr=500;
> while (rn<3 & counter < maxItr) {
+  counter=counter+1
+  rn=rnorm(1)
+ }
> print(c(rn, counter))
[1]  -1.194285 500.000000
##### ----- end examples ----- #####

for – flow control “FOR”

for – flow control “FOR”
使用例: for(counter in vec){rcmd}
目的: rcmdをvecの長さ分繰り返す(繰り返す回数が既知の場合)
関連: while, if, break, length, if

# usage #
for(counter in vec) {
  rcmd
}

##### ----- examples ----- #####
# "hello"を3回表示する #
> for(i_loop in 1:3){print("hello")}
[1] "hello"
[1] "hello"
[1] "hello"

# vec1を要素を順番に1つづ表示する #
> vec1=c("you","are","wonderful")
> for(i_char in vec1){print(i_char)}
[1] "you"
[1] "are"
[1] "wonderful"
# 異なった方法
> for(i_loop in 1:length(vec1)){print(vec1[i_loop])}
[1] "you"
[1] "are"
[1] "wonderful"

# BREAK を使った例 ー 繰り返しの停止条件を組み込む   #
# 正規分布に従う乱数を発生させ、3以上の数値が出た場合に #
# 繰り返し停止し、その数値と繰り返し回数を表示する      #
> for (i_counter in 1:10000) {
+  rn=rnorm(1)
+  if (rn>=3) {break}
+ }
> print(c(rn, i_counter))
[1]    3.194892 1140.000000
##### ----- end examples ----- #####