如何將“不等於”與邏輯或一起使用在一個如果我想做的聲明如果我的參數不等於到 Parameter1 或 Parameter2 然後返回一些內容。但我的以下功能沒有按預期工作。,。 我哪裡出錯了
Names Default To Here(1);
myFunc = function ({myParameter}, {default local},
If (myParameter != Or("Parameter1","Parameter2"),
return(Eval Insert("output some msg")),
);
);
clear log ();
//output = myFunc ("Parameter1");<BR />output = myFunc ("notParameter1");<BR />
進階統計建模消費者與市場研究回覆:如何將「不等於」與邏輯或一起使用你好@尼奧,
我認為問題可能在於您如何調用“或”邏輯運算符。 在 JSL 中,邏輯或是這個字元 | 。 因此,您可以將 If() 語句更改為如下所示,它應該可以工作:
Names Default To Here( 1 );
MyFunc = Function( {Myparam},
If(
(Myparam != parm1 | Myparam != parm2), Return( Eval Insert( "Output some msg" ) )
)
);請記住,邏輯只需要這兩者之一為真,它就會傳回結果。 如果 Myparam 等於其中之一,那麼它仍然會傳回訊息。
希望這可以幫助!,
DS
回覆:如何將「不等於」與邏輯或一起使用如果您想使用 Or,如果允許的參數清單增加,則比較將變得很長並且維護起來很煩人。 所以我會使用 !Contains 和允許的參數列表(或關聯數組):
Names Default To Here(1);
myFunc = Function({myParameter},
{default local},
ok_parameters = {"Parameter1", "Parameter2"};
If(!Contains(ok_parameters, myParameter),
Return(Eval Insert("^myParameter^ not in list ^ok_parameters^"));
,
Return(Eval Insert("^myParameter^ in list ^ok_parameters^"));
);
);
output = myFunc("Parameter1");
Show(output);
output = myFunc("notParameter1");
Show(output);
但您也可以使用 or/and,以下是一個範例(| 表示或):
Names Default To Here(1);
myFunc = Function({myParameter},
{default local},
If(!(myParameter == "Parameter1" | myParameter == "Parameter2"),
return(Eval Insert("output some msg"));
);
);
output = myFunc("Parameter1");
show(output);
output = myFunc ("notParameter1");
show(output);回覆:如何將「不等於」與邏輯或一起使用你可能是這個意思(我最喜歡這個)
if ( (myParameter != Parameter1) & (myParameter != Parameter2) , ...
與此相同
if( ! ( (myParameter == Parameter1) | (myParameter == Parameter2) ), ...
或者,您使用 or() 函數的方式,與此相同
if( !or(myParameter==Parameter1, myParameter==Parameter2), ...
https://en.wikipedia.org/wiki/De_Morgan%27s_laws
另外,如果存在缺失值,請務必使用 isMissing() 處理它們,因為它們不會像您預期的那樣進行比較。