這兩種if完全不同,有很大的區別,請看下面的示例。
ifelse()中的條件判斷中可以得到多個邏輯結果,有多少個邏輯結果,ifelse()的返回值就有多少個元素,且不同的邏輯結果取不同的值。
if(){}else{}中的條件判斷中只得到一個邏輯結果(如果有多個邏輯結果,會自動取第一個,並拋出警告)。然后根據這個邏輯結果,取后面表達式的值。
-- 示例1:
a = 0
b = c(1, 2, 3)
ifelse(a==0, b, 0)
if(a==0){b}else{0}
結果如下:
> a = 0
> b = c(1, 2, 3)
> ifelse(a==0, b, 0)
[1] 1
> if(a==0){b}else{0}
[1] 1 2 3
-- 示例2:
a = c(1, 2, 3)
b = 0
ifelse(a == c(1, 2, 3), 1, 0)
if(a==c(1, 2, 3)){1}else{0}
結果如下:
> a = c(1, 2, 3)
> b = 0
> ifelse(a == c(1, 2, 3), 1, 0)
[1] 1 1 1
> if(a==c(1, 2, 3)){1}else{0}
[1] 1
Warning message:
In if (a == c(1, 2, 3)) { :
the condition has length > 1 and only the first element will be used