R語言中if(){}else{}語句和ifelse()函數的區別詳解
首先看看定義:
# if statement if(cond) expr if(cond) cons.expr else alt.expr # ifelse function ifelse(test, yes, no)
這兩個函數(R語言中都是函數)相同的地方都是根據條件返回對應的值。
區別在於:
if語句的條件是個TRUE/FALSE值,如果是個長度>1的邏輯向量,隻判斷第一個TRUE/FALSE值;而ifelse是長度任意的邏輯向量,返回根據邏輯向量對應對的yes/no值組合的新向量
ifelse如果test的長度是1,而yes/no是長度>1的向量,也是返回長度為1的對應值。如果yes/no是list類型,則返回第一個元素。而if語句根據條件返回對應表達式的值。
if語句和ifelse不能簡單互換,理由如上兩點。如果用錯瞭,得到的結果往往令人感到迷惑。
補充:R語言-條件判斷語句if-else
1.if語句
if (邏輯判斷值){expr}
若邏輯判斷值為TRUE,則執行{expr};若邏輯判斷值為FALSE,則不執行{expr}
> x<-6 > if(x<8) x<-x+10 > x [1] 16 > x<-10 > if(x<8) x<-x+10 > x [1] 10
2.if-else語句
if (邏輯判斷值){ expr1 }else{ expr2 }
若邏輯判斷值為TRUE,則執行{expr1};否則不執行{expr}。
> x<-8 > if (x<30){ + x<-x-5 + }else{ + x<-x+5 + } > x [1] 3
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。
推薦閱讀:
- None Found