R語言 迴圈與條件

2021-07-12 07:54:58 字數 1880 閱讀 1049

迴圈

for (n in x) {expr}

r中最基本的是for迴圈,其中n為迴圈變數,x通常是乙個序列。n在每次迴圈時從x中順序取值,代入到後面的expr語句中進行運算。下面的例子即是以for迴圈計算30個fibonacci數。

x <- c(1,1)

for (i in 3:30)

例子1pv<-c(1,1,2,3,1,1,15,7,18,1,1,2,3,1,1)

result<- ""

m<-1

for(i in pv) else if(i<=15) else

m<-m+1

} 例子2

pv<-c(1,1,2,3,1,1,15,7,18,1,1,2,3,1,1)

result<-""

for(i in 1:length(pv)) else if(pv[i]<=15) else

} while (condition)

當不能確定迴圈次數時,我們需要用while迴圈語句。在condition條件為真時,執行大括號內的expr語句。下面即是以while迴圈來計算30個fibonacci數。

x <- c(1,1)

i <- 3

while (i <= 30)

例子3pv<-c(1,1,2,3,1,1,15,7,18,1,1,2,3,1,1)

i<-1

result<-""

while(i

repeat-break迴圈語句

repeat是無限迴圈語句,並且會在達到迴圈條件後使用break語句直接跳出迴圈。例如:

pv<-c(1,1,2,3,1,1,15,7,18,1,1,2,3,1,1)

i<-1

result<-""

repeat

if(pv[i]<=5) else if(pv[i]<=15) else

i<-i+1

}例項中的break也叫跳出迴圈命令,執行後將直接跳出迴圈語句。r語言還提供了乙個next語句,執行後只會跳出本次迴圈,而不會跳出整個迴圈語句。

條件if (conditon) else

if語句用來進行條件控制,以執行不同的語句。若condition條件為真,則執行expr1,否則執行expr2。ifesle()函式也能以簡潔的方式構成條件語句。下面的乙個簡單的例子是要找出100以內的質數。

x <- 1:100

y <- rep(t,100)

for (i in 3:100) else

}print(x[y])

在上面例子裡,all()函式的作用是判斷乙個邏輯序列是否全為真,%%的作用是返回餘數。在if/else語句中乙個容易出現的錯誤就是else沒有放在}的後面,若你執行下面的示例就會出現錯誤。

logic = 3

x<- c(2,3)

if (logic == 2)

else

show(y)

乙個例子

本例來自於"introduction to scientific programming and simulatoin using r"一書的習題。有這樣一種賭博遊戲,賭客首先將兩個骰子隨機拋擲第一次,如果點數和出現7或11,則贏得遊戲,遊戲結束。如果沒有出現7或11,賭客繼續拋擲,如果點數與第一次扔的點數一樣,則贏得遊戲,遊戲結束,如果點數為7或11則輸掉遊戲,遊戲結束。如果出現其它情況,則繼續拋擲,直到贏或者輸。用r程式設計來計算賭客贏的概率,以決定是否應該參加這個遊戲。

craps <- function() else if (current.roll == initial.roll) }}

mean(replicate(10000, craps()))

從最終結果來看,賭客贏的概率為0.46,長期來看只會往外掏錢,顯然不應該參加這個遊戲了。最後要說的是,本題也可以用遞迴來做。

R 條件與迴圈

迴圈語句 使用形式 if 條件 如果條件成立,大括號內的語句就被執行 使用形式 if 條件 else 注意 else必須緊跟在 後面,不能另起一行,否則報錯 還可以組合起來用 if.else if.else.語句 if 條件1 else if 條件2 else if 條件3 else switch語...

R 條件與迴圈

迴圈語句 使用形式 if 條件 如果條件成立,大括號內的語句就被執行 使用形式 if 條件 else 注意 else必須緊跟在 後面,不能另起一行,否則報錯 還可以組合起來用 if.else if.else.語句 if 條件1 else if 條件2 else if 條件3 else switch語...

R語言 迴圈 條件 函式基礎練習 1

學習筆記 1 本金10000元存入銀行,年利率是百分之三,每過1年,將本金和利息相加作為新的本金。計算10年之後,獲得本金是多少?用for迴圈 sum 10000 for i in 1 10 print sum 1 找出1 1000既不能被6整除,又不能被8整除的所有數 for i in 1 100...