Comportamento massimo () diverso da JMP 12 vs JMP 11?Perché il seguente lavoro in JMP 12 non funziona più?
Esempio, ho una colonna "WW" con voci come ("17WW01", "17WW02", "17WW03" ... "17WW05").
E voglio trovare l'ultima settimana lavorativa nella colonna "WW" (charcter / nominale in entrambe le versioni di JMP):
current_ww = Max(Associative Array(:WW << Get As Matrix()) << Get Keys);
JMP 11.1.1 => funziona correttamente. current_ww = "17WW05"
JMP 12.2.0 => questo non funziona più. current_ww =.
Perché? Max () ora è super restrittivo in JMP 12? DJ
Ri: Max () comportamento - diverso da JMP 12 vs JMP 11?Grazie per il tuo feedback su questo. Avremmo dovuto emettere una nota sulla compabitility JSL con questa modifica: parte del problema è che la modifica ha interessato un numero di funzioni numeriche. Aggiorneremo la documentazione con una versione futura.
Va notato che la funzione non ha mai funzionato correttamente sulle stringhe. Nota che espandendo l'esempio sopra:
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>
Le due risposte tornano uguali. Il bug in JMP 11 (e precedente) è che il risultato che stavi vedendo è un effetto collaterale della valutazione degli argomenti.
Ri: Max () comportamento - diverso da JMP 12 vs JMP 11?"Questo è stato modificato di proposito - Max () è una funzione numerica, come Mean () o Std Dev ().
Per le stringhe, è possibile utilizzare Ordinamento crescente o Ordinamento decrescente. Per esempio:"
Ma questo non è quello che dice sul suggerimento del hover hover di JMP12. Dice che può fare il massimo di stringhe anche in JMP12. Quindi, è cambiato, ma la documentazione di JMP12 non è cambiata. Questo è il motivo per cui alla gente non piace passare alle nuove versioni di JMP, a causa di cambiamenti nascosti come questo. Nel mio caso uno script JSL critico per la mia azienda funzionava alla perfezione in JMP11, quindi migriamo a JMP12 e si blocca. DJ
Ri: Max () comportamento - diverso da JMP 12 vs JMP 11?E naturalmente questo è tornato a tormentarmi oggi con una sceneggiatura critica. (migrazione da JMP11 a JMP12). Lo riferirò a JMP anche se probabilmente non faranno nulla a riguardo, suppongo. Sicuramente un bug JMP12 nella mia mente, poiché la funzione max afferma che può trovare il massimo di una lista di stringhe (come faceva bene in JMP11). DJ
Ri: Max () comportamento - diverso da JMP 12 vs JMP 11?L'ho smontato in un modo diverso:
lst = {"17WW01", "17WW02", "17WW03", "17WW04", "17WW05"};
Max(lst);
Ciò restituisce un valore in JMP 11 ma un valore vuoto in 12 o 13. Immagino che la soluzione alternativa sarebbe quella di ordinare l'elenco e prendere l'ultimo elemento. Non sono sicuro se il cambiamento di comportamento è un bug o una funzionalità.
Ri: Max () comportamento - diverso da JMP 12 vs JMP 11?Questo è stato modificato di proposito - Max () è una funzione numerica, come Mean () o Std Dev ().
Per le stringhe, è possibile utilizzare Ordinamento crescente o Ordinamento decrescente. Per esempio:
current_ww = Sort Descending(Associative Array(:WW << Get As Matrix()) << Get Keys)[1];
Ri: Max () comportamento - diverso da JMP 12 vs JMP 11?L'ho smontato per vedere dove si rompe. Penso che sia un bug. Ecco la prima parte:
aa = Associative Array( :WW << Get As Matrix );
k = aa << Get Keys;
Questa espressione valuta:
Associative array( 5 elements ) assigned.
{"17WW01", "17WW02", "17WW03", "17WW04", "17WW05"}
Alla fine, ho fatto un'espressione valida
max expr = Expr( Maximum() );
For( item = 1, item <= N Items( k ), item++,
Insert Into( max expr, k[item] );
);
Show( Name Expr( max expr ) );
Ottengo questo risultato:
Name Expr(max expr) = Maximum("17WW01", "17WW02", "17WW03", "17WW04", "17WW05");
Questa è una chiamata valida per la funzione massima. Se gli argomenti multipli vengono visualizzati in questo modo e non in un elenco o in una matrice, devono essere tutti numerici o tutte le stringhe di caratteri. Chiaramente questo esempio soddisfa il requisito. Quando valuto questa espressione, tuttavia, ottengo questo risultato:
need arguments to be scalars, matrices, or lists in access or evaluation of 'Maximum' , Maximum/*###*/("17WW01", "17WW02", "17WW03", "17WW04", "17WW05")
Se provo a utilizzare l'elenco di chiavi originale:
Name Expr(max expr) = Maximum({"17WW01", "17WW02", "17WW03", "17WW04", "17WW05"});
Non ricevo il messaggio di errore. Ricevo solo il valore mancante come rapporto nel post originale.
Sembra un insetto.
Ri: Max () comportamento - diverso da JMP 12 vs JMP 11?Apparentemente è cambiato. Né JMP 12 né JMP 13 restituiscono gli stessi risultati di JMP 11.