R語言中if(){}else{}語句和ifelse()函數(shù)的區(qū)別詳解
首先看看定義:
# if statement if(cond) expr if(cond) cons.expr else alt.expr # ifelse function ifelse(test, yes, no)
這兩個函數(shù)(R語言中都是函數(shù))相同的地方都是根據(jù)條件返回對應(yīng)的值。
區(qū)別在于:
if語句的條件是個TRUE/FALSE值,如果是個長度>1的邏輯向量,只判斷第一個TRUE/FALSE值;而ifelse是長度任意的邏輯向量,返回根據(jù)邏輯向量對應(yīng)對的yes/no值組合的新向量
ifelse如果test的長度是1,而yes/no是長度>1的向量,也是返回長度為1的對應(yīng)值。如果yes/no是list類型,則返回第一個元素。而if語句根據(jù)條件返回對應(yīng)表達(dá)式的值。
if語句和ifelse不能簡單互換,理由如上兩點。如果用錯了,得到的結(jié)果往往令人感到迷惑。
補(bǔ)充:R語言-條件判斷語句if-else
1.if語句
if (邏輯判斷值){expr}
若邏輯判斷值為TRUE,則執(zhí)行{expr};若邏輯判斷值為FALSE,則不執(zhí)行{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,則執(zhí)行{expr1};否則不執(zhí)行{expr}。
> x<-8 > if (x<30){ + x<-x-5 + }else{ + x<-x+5 + } > x [1] 3
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
R語言dplyr包之高效數(shù)據(jù)處理函數(shù)(filter、group_by、mutate、summarise)詳解
這篇文章主要介紹了R語言dplyr包之高效數(shù)據(jù)處理函數(shù)(filter、group_by、mutate、summarise)的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03R語言基于Keras的MLP神經(jīng)網(wǎng)絡(luò)及環(huán)境搭建
這篇文章主要介紹了R語言基于Keras的MLP神經(jīng)網(wǎng)絡(luò),我并沒有使用python去對比結(jié)果,但NSS的文章中有做對比,數(shù)據(jù)顯示R與Python相比在各方面的差別都不大,具體內(nèi)容介紹跟隨小編一起看看吧2022-01-01

R語言-實現(xiàn)按日期分組求皮爾森相關(guān)系數(shù)矩陣

R語言學(xué)習(xí)數(shù)據(jù)獲取操作示例詳解

關(guān)于R語言lubridate包處理時間數(shù)據(jù)的問題