rendere le funzioni personalizzate utilizzabili nelle formuleCiao a tutti,
Esiste un modo per registrare uno script contenente funzioni per renderle utilizzabili nelle formule di colonna?
Ad esempio, se a scrivessi uno script con una funzione hex2binary({str}) che converte un numero esadecimale in una stringa del suo equivalente binario e volessi poter chiamare questa funzione in una formula simile a quella incorporata Formula JSL, è possibile?
Grazie
Ray
Re: rendere utilizzabili le funzioni personalizzate nelle formule<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Sembra che tu sia già lì. Ma, per un altro esempio, puoi decodificare il componente aggiuntivo in:
https://community.jmp.com/docs/DOC-7528
Re: rendere utilizzabili le funzioni personalizzate nelle formuleCiao Ray3, Jeff, MS
Qualche tempo fa, ma in realtà penso di aver capito come farlo!
Ho anche provato il metodo "include" descritto da MS e funziona ma è incredibilmente lento.
Tuttavia, sono stato anche in grado di far funzionare il metodo del componente aggiuntivo creando il componente aggiuntivo con la mia funzione e quindi chiamandolo dall'editor di formule tramite
globale:miafunzione()
Più specificamente, ho creato questa funzione (è basata su R e in realtà restituisce solo la radice quadrata dell'argomento, ma suppongo che non abbia importanza qui 
miaRadice = Funzione({x},
R Inizia( );
R invia (x);
R Invia("
y <- quadrato(x)
");
a = R Ottieni (y);
R Termine( );
Ritorno(a);
);
E poi potrei aggiungere questa formula per una nuova colonna:
globale:myRoot(:Colonna 1)
Saluti,
Esben
rendere le funzioni personalizzate utilizzabili nelle formuleCiao Jeff, MS,
Grazie per i suggerimentiHo provato entrambi i suggerimenti:
L'uso delle funzioni Local(Include()) ha funzionato, ma è stato abbastanza lento per il mio set di dati (che è lungo circa 20.000 righe) poiché ogni volta che calcola la formula apre il file incluso.
Ho anche provato il suggerimento di Jeff e ho aggiunto la funzione a JMPStart.jsl.La funzione viene visualizzata nell'elenco dei simboli globali e posso richiamarla da altri script senza problemi in una sessione.Tuttavia, se chiamo la funzione da una formula di colonna, ottengo un errore "nome non risolto".C'è qualcosa di speciale che devo fare per l'ambito per fare in modo che la formula della colonna riconosca la funzione?
Grazie!
Ray
rendere le funzioni personalizzate utilizzabili nelle formuleCiao Ray,
Non c'è modo di far apparire la funzione nel browser delle funzioni nell'editor delle formule, ma le funzioni definite dall'utente possono essere utilizzate nelle formule facendo doppio clic su un elemento della formula e digitando la chiamata della funzione.
Per garantire che le tue funzioni siano definite in ogni sessione JMP hai un paio di opzioni.
1) Puoi inserire la dichiarazione della tua funzione nel file JMPStart.JSL.
2) È possibile creare un componente aggiuntivo che non abbia menu e funzionalità oltre alla dichiarazione di queste funzioni. Basta inserire le dichiarazioni della funzione nel file addinload.jsl. Qualsiasi copia di JMP su cui è installato il componente aggiuntivo avrà tali funzioni disponibili.
Spero che aiuti.
-Jeff
rendere le funzioni personalizzate utilizzabili nelle formuleNon sono a conoscenza di un modo per registrare funzioni personalizzate a livello globale che funzioni nelle formule di colonna. Tuttavia, esiste un modo, forse non molto conveniente, per chiamare una funzione localmente da un file jsl salvato.
Diciamo che hai salvato uno script solo con questa funzione. Il file si chiama "plus_one" (o qualsiasi altra cosa).
più uno = funzione ({ X } , X + 1 ) ;
Per chiamare questa funzione all'interno di una formula di colonna utilizzare local() e include() come di seguito:
Locale ( più uno ,
Includere ( "percorso/più_uno.jsl" ) ;
più uno ( : Colonna ) ;
)
Dove path è il percorso del file jsl salvato e :Column è la colonna a cui applichi la formula. Include() analizza e valuta il codice jsl nel file (tuttavia il file non viene aperto) e senza il contesto locale si otterrà un errore.
Non è bello ma funziona e può essere utile se la funzione è molto complessa e viene riutilizzata spesso.
In realtà mi è appena venuto in mente che dovrebbe essere possibile raccogliere tutta la mia formula personalizzata in un unico file e utilizzare uno script di avvio per impostare la variabile del percorso. Allora sarebbero più facili da implementare “a livello globale”. E qualsiasi modifica nelle funzioni memorizzate verrebbe tradotta in tutti i tuoi datatable senza la necessità di modificare ciascuna colonna che ha una funzione definita dall'utente. Non ho testato questa idea, ma è una prospettiva intrigante. Tuttavia, potrebbe essere un approccio affamato di RAM.