數學的Which
功能的是廣義If
:等效Mathematica的哪
Which[test_1, value_1, test_2, value_2, …]
評估每個依次
test_i
的,返回value_i
的對應於所述第一個中的值,該值產量爲True
。
這只不過是一種方便的方式來擺脫嵌套簡單的if-else測試的長序列中的多餘語法。
R是否具有相同的功能?
順便說一句,我知道,我總是可以這樣做
if (test_1) value_1 else if (test_2) value_2 else ... value_n else default
,或者等價地,
if (test_1) value_1 else
if (test_2) value_2 else
...
if (test_n) value_n else
default
...但是,正如我已經提到,相比於當Which
,嵌套的if-else
語句帶來了很多多餘的語法。
而且,我所知道的
ifelse(t_1, v_1, ifelse(t_2, v_2, ..., ifelse(t_n, v_n, default)...))
...但結果到測試的形狀敏感,所以它不完全等同於嵌套if-else
語句。
最後,R的switch
聲明與我正在尋找的聲明類似,因爲它將一個調度封裝在一系列測試中,但它並不完全相同。在
switch(expr,
case_1 = value_1,
case_2 = value_2,
...
case_n = value_n,
default)
...測試是expr
人人平等的比較對case_i
,而在Which
等,測試是任意的布爾表達式。
@JohnColeman:因爲,AFAICT,'case_i'必須是標籤;他們不能是任意的表達......(我可能錯了) – kjo
@kjo你是對的。 –
@ZheyuanLi:儘管他們的名字,R的''哪個'功能和Mathematica的'哪個'做了很不同的事情。 – kjo