Max()行為 - 與JMP 12和JMP 11不同?為什麼JMP 12中的以下工作不再適用?
例如,我有一個列“WW”,其條目如(“17WW01”,“17WW02”,“17WW03”......“17WW05”)。
我想在“WW”欄中找到最新的工作週(兩個JMP版本中的字符/名義):
current_ww = Max(Associative Array(:WW << Get As Matrix()) << Get Keys);
JMP 11.1.1 =>這很好用。 current_ww =“17WW05”
JMP 12.2.0 =>這不再起作用了。 current_ww =。
這是為什麼?Max()現在是JMP 12中的超級限制嗎?DJ
Re:Max()行為 - 與JMP 12和JMP 11不同?感謝您對此的反饋。 我們應該發布一個帶有此更改的JSL compabitility note - 問題的一部分是該更改影響了許多數字函數。 我們將在未來的版本中更新文檔。
應該注意的是,該函數在字符串上從未真正正常工作。 請注意,擴展上面的示例:
lst <SPAN class="token operator">=</SPAN> <SPAN class="token punctuation">{</SPAN><SPAN class="token string">"17WW01"</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"17WW02"</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"17WW03"</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"17WW04"</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"17WW05"</SPAN><SPAN class="token punctuation">}</SPAN><SPAN class="token punctuation">;</SPAN>
Show(Max<SPAN class="token punctuation">(</SPAN>lst<SPAN class="token punctuation">))</SPAN><SPAN class="token punctuation">;<BR />Show(Min(lst));</SPAN>
這兩個答案回來了。 JMP 11(及之前版本)中的錯誤是您看到的結果是參數評估的副作用。
Re:Max()行為 - 與JMP 12和JMP 11不同?“這是故意更改的 - Max()是一個數字函數,如Mean()或Std Dev()。
對於字符串,您可以使用Sort Ascending或Sort Descending。例如:”
但這不是它在JMP12懸停幫助提示上所說的內容。 它說它在JMP12中也能做到最大的字符串。 所以,它改變了,但JMP12文檔未能改變。 這就是為什麼人們不喜歡更改為新的JMP版本,因為這樣的隱藏更改。 在我的例子中,我公司的一個關鍵JSL腳本在JMP11中運行良好,然後我們遷移到JMP12並崩潰。 DJ
Re:Max()行為 - 與JMP 12和JMP 11不同?當然,這回到今天困擾我的關鍵腳本。(從JMP11遷移到JMP12)。 我會向JMP報告,儘管他們可能不會對此做任何事情。 絕對是我腦海中的JMP12錯誤,因為max函數聲明它可以找到字符串列表的最大值(因為它在JMP11中用得很好)。 DJ
Re:Max()行為 - 與JMP 12和JMP 11不同?我以不同的方式把它拆開了:
lst = {"17WW01", "17WW02", "17WW03", "17WW04", "17WW05"};
Max(lst);
這將返回JMP 11中的值,但返回12或13中的空值。 我想解決方法是對列表進行排序並採取最後一項。 不確定行為的變化是錯誤還是功能。
Re:Max()行為 - 與JMP 12和JMP 11不同?這是故意更改的 - Max()是一個數字函數,如Mean()或Std Dev()。
對於字符串,您可以使用Sort Ascending或Sort Descending。例如:
current_ww = Sort Descending(Associative Array(:WW << Get As Matrix()) << Get Keys)[1];
Re:Max()行為 - 與JMP 12和JMP 11不同?我把它分開看看它發生了什麼故障。我認為這是一個錯誤。這是第一部分:
aa = Associative Array( :WW << Get As Matrix );
k = aa << Get Keys;
此表達式的計算結果為:
Associative array( 5 elements ) assigned.
{"17WW01", "17WW02", "17WW03", "17WW04", "17WW05"}
最後,我做了一個有效的表達
max expr = Expr( Maximum() );
For( item = 1, item <= N Items( k ), item++,
Insert Into( max expr, k[item] );
);
Show( Name Expr( max expr ) );
我得到這個結果:
Name Expr(max expr) = Maximum("17WW01", "17WW02", "17WW03", "17WW04", "17WW05");
這是對Maximum函數的有效調用。如果多個參數看起來像這樣,而不是列表或矩陣,那麼它們必須都是數字或所有字符串。顯然,這個例子符合要求。但是,當我評估這個表達式時,我得到了這個結果:
need arguments to be scalars, matrices, or lists in access or evaluation of 'Maximum' , Maximum/*###*/("17WW01", "17WW02", "17WW03", "17WW04", "17WW05")
如果我嘗試使用原始密鑰列表:
Name Expr(max expr) = Maximum({"17WW01", "17WW02", "17WW03", "17WW04", "17WW05"});
我沒有收到錯誤消息。我只得到原始帖子中的缺失值作為報告。
看起來像個bug。
Re:Max()行為 - 與JMP 12和JMP 11不同?顯然它已經改變了。 JMP 12或JMP 13都不會返回與JMP 11相同的結果。