Suggerimento JSL: usa le matrici anziché le listeL'elenco è uno degli strumenti di base per l'organizzazione dei dati in JSL. Il potere delle liste è che possono contenere qualsiasi tipo di oggetto (numeri, personaggi, altri elenchi, ...) e possono crescere e rimpicciolirsi secondo necessità. Tuttavia, se hai solo bisogno di un elenco fisso di numeri, puoi ottenere prestazioni molto migliori da una matrice monodimensionale.
Considera questi due esempi che creano array di numeri dispari.
// crea un elenco di numeri dispari
n = 1000;
y = {};
per (i = 1, i <= n, i ++,
y = 2 * i - 1;
);
y;
// crea una matrice di numeri dispari
n = 1000;
y = J (1, n); // crea una matrice 1 xn con tutti i valori impostati su 1
per (i = 1, i <= n, i ++,
y = 2 * i - 1;
);
Per poche centinaia di articoli, non c'è molta differenza. Ma come n va oltre 1000 (o se il codice di cui sopra è in un ciclo), si inizia a notare la differenza di velocità. Per gli elenchi, c'è una certa quantità di costi generali per una crescita dinamica e flessibilità generale.
Si noti che la funzione J può essere utilizzata per creare una nuova matrice di una determinata dimensione. J m, n è il nome per il Unit Matrix in algebra lineare.
Si noti inoltre che una matrice unidimensionale può essere indicizzata con un solo indice. Cioè, possiamo usare y invece di y [1] . Ciò semplifica il trattamento delle matrici come liste e nel ciclo sopra, che è lo stesso in entrambi i casi.
Domanda fino alla prossima volta: come può essere reso il codice ancora più veloce?
Xan Gregg ha scritto: Ciao Uday, dovresti provare a postare nel ... Xan Gregg ha scritto:
Ciao Uday,
Dovresti provare a postare nei forum a community.jmp.com dove puoi fornire una descrizione più dettagliata e ottenere risposte da chiunque.
Dalla tua descrizione qui, penso che Loc () la funzione sarà utile per indagare. Ti darà le posizioni delle file che soddisfano una determinata condizione per le operazioni successive.
Per portare le colonne in Graph Builder, trasformale in una tabella con, ad esempio, Come tabella () .
Uday ha scritto: Ciao Mr.Gregg, quindi diciamo che ho questa matr ... Uday ha scritto:
Ciao Mr.Gregg,
Quindi diciamo che ho questa matrice con 5 colonne e n righe. Ora voglio modificare queste colonne con una condizione. Ad esempio: voglio rendere tutti i valori NULL in ciascuna delle colonne della matrice che sono inferiori a 5.
Come utilizzerei anche queste colonne in un generatore di grafici.
Saluti
Uday
Suggerimento JSL: sostituzione dei loop con funzioni sulle matrici - JMP B ... Suggerimento JSL: sostituisci i loop con le funzioni sulle matrici - Blog JMP ha scritto:
[...] il mio precedente consiglio JSL, abbiamo visto come è più veloce accedere agli elementi della matrice piuttosto che elencare gli elementi. È ancora più veloce se non lo fai [...]
Michael scrisse: penserei che y = index (1,1000,2) ... Michael ha scritto:
Penserei che y = index (1,1000,2) sarebbe più veloce anche se non l'ho verificato.
Xan Gregg ha scritto: hai ragione. Pensavo di essere clev ... Xan Gregg ha scritto:
Hai ragione. Pensavo di essere intelligente per salvare quel miglioramento per un suggerimento futuro, ma forse avrei dovuto trovare un esempio che non poteva essere compromesso.
Ryan Kelly ha scritto: come si esegue questo in JMP? Ryan Kelly ha scritto:
come si esegue questo in JMP?
Xan Gregg ha scritto: JSL è JMP Scripting Language. Suo... Xan Gregg ha scritto:
JSL è il linguaggio di scripting JMP. Non è necessario per il normale utilizzo interattivo di JMP, ma può essere utile per le attività personalizzate. File> Nuovo> Script ti fornirà una finestra di script vuota in cui puoi inserire script come i frammenti sopra e eseguirli con Modifica> Esegui script (Ctrl-R). L'output, se presente, va alla finestra Log.
Chris Dorger ha scritto: Come faccio a creare una lista da una matrice ... Chris Dorger ha scritto:
Come faccio a creare una lista da una matrice o da una colonna della tabella di dati?
Xan Gregg ha scritto: La funzione As List () convertirà un ma ... Xan Gregg ha scritto:
La funzione As List () convertirà una matrice in una lista di liste, una per ogni riga. Se vuoi una lunga lista, puoi usare la funzione Shape () per prima cosa mettere tutti gli elementi della matrice in una riga.