循環(huán)結(jié)構(gòu)重復(fù)地執(zhí)行一個或一系列語句, 直到某個條件不為真為止。 R中的循環(huán)結(jié)構(gòu)包括for 和while結(jié)構(gòu)。
for 結(jié)構(gòu)
for 循環(huán)重復(fù)地執(zhí)行一個語句, 直到某個變量的值不再包含在序列seq中為止。 語法為:
for (var in seq) statement
試用一下:
> for (i in 1:3) print("Hello World")
[1] "Hello World"
[1] "Hello World"
[1] "Hello World"
> for i in 1:3 print("Hello World")
Error: unexpected symbol in "for i"
> for (i in 1:3) {print("Hello World")}
[1] "Hello World"
[1] "Hello World"
[1] "Hello World"
> for (i in 1:3) (print("Hello World"))
[1] "Hello World"
[1] "Hello World"
[1] "Hello World"
通過試用,可以看到,print("Hello World")被執(zhí)行了3次。for后面的括號是不能缺少的,而語句外面加上大括號或者小括號都是可以正常運(yùn)行的。
while 結(jié)構(gòu)
while循環(huán)重復(fù)地執(zhí)行一個語句, 直到條件不為真為止。 語法為:
while (cond) statement
需要注意,語句中的條件語句要能夠變化,使while中的條件能夠?yàn)榧俨蝗粫萑霟o限循環(huán)。
> i <- 5
> while (i > 1) {
+ print(i);
+ print("Hello World");
+ i <- i -1;
+ print(i)
+
+ }
[1] 5
[1] "Hello World"
[1] 4
[1] 4
[1] "Hello World"
[1] 3
[1] 3
[1] "Hello World"
[1] 2
[1] 2
[1] "Hello World"
[1] 1
通過print語句打印出了i的值,可以看到i從5開始,每循環(huán)一次,i減少1,直到i = 1不再符合要求。
R在處理大數(shù)據(jù)集時,性能不佳。只要可能, 最好聯(lián)用R中的內(nèi)建數(shù)值/字符處理函數(shù)和apply族函數(shù)。