Max () Verhalten - unterscheidet sich von JMP 12 gegenüber JMP 11?Warum funktioniert Folgendes in JMP 12 nicht mehr?
Ich habe zum Beispiel eine Spalte "WW" mit Einträgen wie "17WW01", "17WW02", "17WW03" ... "17WW05").
Und ich möchte die neueste Arbeitswoche in der Spalte "WW" finden (Zeichen / nominal in beiden JMP-Versionen):
current_ww = Max(Associative Array(:WW << Get As Matrix()) << Get Keys);
JMP 11.1.1 => das funktioniert gut. current_ww = "17WW05"
JMP 12.2.0 => das funktioniert nicht mehr. current_ww =.
Warum das? Ist Max () jetzt in JMP 12 extrem restriktiv? DJ
Re: Max () Verhalten - unterscheidet sich von JMP 12 im Vergleich zu JMP 11?Vielen Dank für Ihr Feedback dazu. Wir hätten eine JSL-Kompatibilitätsnotiz mit dieser Änderung herausgeben sollen - ein Teil des Problems ist, dass die Änderung eine Reihe von numerischen Funktionen betraf. Wir werden die Dokumentation mit einer zukünftigen Version aktualisieren.
Es ist zu beachten, dass die Funktion bei Strings nie richtig funktioniert hat. Beachten Sie, dass das obige Beispiel erweitert wird:
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>
Die beiden Antworten kommen gleich zurück. Der Fehler in JMP 11 (und früher) besteht darin, dass das Ergebnis, das Sie gesehen haben, ein Nebeneffekt der Bewertung der Argumente ist.
Re: Max () Verhalten - unterscheidet sich von JMP 12 im Vergleich zu JMP 11?"Dies wurde absichtlich geändert - Max () ist eine numerische Funktion wie Mean () oder Std Dev ().
Für Zeichenfolgen können Sie Aufsteigend sortieren oder Absteigend sortieren verwenden. Zum Beispiel:"
Aber so steht es nicht im JMP12-Hover-Hilfetipp. Es besagt, dass es in JMP12 auch max Zeichenfolgen ausführen kann. Ja, es hat sich geändert, aber die JMP12-Dokumentation wurde nicht geändert. Dies ist der Grund, warum Leute nicht gerne auf neue JMP-Versionen wechseln, weil versteckte Änderungen wie diese. In meinem Fall hat ein kritisches JSL-Skript für mein Unternehmen in JMP11 hervorragend funktioniert. Dann werden wir auf JMP12 migriert und stürzen ab. DJ
Re: Max () Verhalten - unterscheidet sich von JMP 12 im Vergleich zu JMP 11?Und natürlich hat mich das heute mit einem kritischen Drehbuch verfolgt. (Migration von JMP11 zu JMP12). Ich werde dies JMP melden, obwohl sie wahrscheinlich nichts unternehmen werden, nehme ich an. Auf jeden Fall ein JMP12-Fehler, denke ich, da die max-Funktion angibt, dass sie das Maximum einer Stringliste finden kann (wie es früher in JMP11 gut war). DJ
Re: Max () Verhalten - unterscheidet sich von JMP 12 im Vergleich zu JMP 11?Ich habe es anders auseinander genommen:
lst = {"17WW01", "17WW02", "17WW03", "17WW04", "17WW05"};
Max(lst);
Dies gibt einen Wert in JMP 11 zurück, aber einen leeren Wert in 12 oder 13. Ich denke, die Problemumgehung wäre, die Liste zu sortieren und den letzten Punkt zu übernehmen. Nicht sicher, ob die Verhaltensänderung ein Fehler oder eine Funktion ist.
Re: Max () Verhalten - unterscheidet sich von JMP 12 im Vergleich zu JMP 11?Dies wurde absichtlich geändert - Max () ist eine numerische Funktion wie Mean () oder Std Dev ().
Für Zeichenfolgen können Sie Aufsteigend sortieren oder Absteigend sortieren verwenden. Zum Beispiel:
current_ww = Sort Descending(Associative Array(:WW << Get As Matrix()) << Get Keys)[1];
Re: Max () Verhalten - unterscheidet sich von JMP 12 im Vergleich zu JMP 11?Ich nahm es auseinander, um zu sehen, wo es zusammenbricht. Ich denke, dass es ein Fehler ist. Hier ist der erste Teil:
aa = Associative Array( :WW << Get As Matrix );
k = aa << Get Keys;
Dieser Ausdruck ergibt folgende Werte:
Associative array( 5 elements ) assigned.
{"17WW01", "17WW02", "17WW03", "17WW04", "17WW05"}
Schließlich habe ich einen gültigen Ausdruck gemacht
max expr = Expr( Maximum() );
For( item = 1, item <= N Items( k ), item++,
Insert Into( max expr, k[item] );
);
Show( Name Expr( max expr ) );
Ich bekomme dieses Ergebnis:
Name Expr(max expr) = Maximum("17WW01", "17WW02", "17WW03", "17WW04", "17WW05");
Dies ist ein gültiger Aufruf der Maximum-Funktion. Wenn die mehreren Argumente so und nicht in einer Liste oder Matrix angezeigt werden, müssen sie alle numerisch oder alle Zeichenfolgen sein. Dieses Beispiel erfüllt eindeutig die Anforderung. Bei der Auswertung dieses Ausdrucks erhalte ich jedoch folgendes Ergebnis:
need arguments to be scalars, matrices, or lists in access or evaluation of 'Maximum' , Maximum/*###*/("17WW01", "17WW02", "17WW03", "17WW04", "17WW05")
Wenn ich versuche, die ursprüngliche Liste der Schlüssel zu verwenden:
Name Expr(max expr) = Maximum({"17WW01", "17WW02", "17WW03", "17WW04", "17WW05"});
Ich erhalte die Fehlermeldung nicht. Ich bekomme nur den fehlenden Wert als Bericht im ursprünglichen Beitrag.
Sieht aus wie ein Fehler.
Re: Max () Verhalten - unterscheidet sich von JMP 12 im Vergleich zu JMP 11?Anscheinend hat sich das geändert. Weder JMP 12 noch JMP 13 liefern die gleichen Ergebnisse wie JMP 11.