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

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

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

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