Ho lavorato molto con l'interfaccia JMP-R durante la creazione del mio componente aggiuntivo JMP, il Builder add-in personalizzato JMP-R . Quindi, se vuoi imparare come iniziare con la connessione JMP-R usando JSL, sei arrivato nel posto giusto!
Sono un sostenitore dell'apprendimento tramite esempi piuttosto che la memorizzazione di API, quindi iniziamo con l'esempio dei dati di roundripping su R e di nuovo su JMP . Dovrai inviare dati da JMP a R, eseguire operazioni in R e restituire i risultati a JMP. La spina dorsale del tuo script dovrebbe quindi assomigliare a questo:
//initializes the R interfaces
R Init();
//send data to R
R Send(/*name of JMP object you want to send to R, i.e. data table, list, matrix, string, or numeric*/);
//or
R Send File(/*path to the file you want to send here, as a string*/);
//perform calculations in R
R Submit(/*code you want to execute in R here, as a string*/);
//or
R Submit File(/*path to the file that contains the R code you want to execute*/);
//return data from R
varName = R Get(/*name of object you want to return from R*/);
//terminates the R interfaces
R Term();
O forse ti piacerebbe fare tutto in un'unica riga, che è equivalente a R Invia () per i nomi delle variabili uno per uno, R Submit () per il tuo codice e R Get () per variabili R una ad una:
R Execute(/*list of R input var names*/, /*list of R output var names*/, "\[your R code to submit]\");
Una domanda comune che ho visto è, 'qual è la differenza tra R Invia () e R Submit () ?'
R Invia () invia una struttura dati a R - le cinque opzioni sono tabella dati, elenco, matrice, stringa e numerico.
R Submit () , al contrario, invia il codice R come stringa a R che si desidera eseguire. È possibile scrivere il codice come stringa se non contiene virgolette o sfuggire utilizzando "\[ codice ]\" .
Una volta che hai questo backbone, rimane una domanda: come si ottiene l'output R in un formato che è possibile utilizzare?
La risposta: dipende.
Se si desidera aprire una tabella dati che è stata recuperata da R, è possibile utilizzare il seguente comando:
R Get(/*name of R variable that contains data table*/) << new data view;
Questo apre la tabella dei dati in JMP.
Se si desidera aggiungere una colonna in una tabella di dati JMP esistente, è possibile utilizzare:
varName = R Get(/*name of R variable that contains list with values*/);
dt << New Column(/*name of new column*/, /*column data type, e.g. Character, Numeric*/, Values(varName));
Se vuoi visualizzare di più recentemente prodotto trama R, è possibile utilizzare:
R Get Graphics(/*either png or jpg*/);
Per visualizzare questa immagine in una finestra JMP, utilizzare:
New Window("My Plot", R Get Graphics(/*either png or jpg*/));
Ci sono anche altre opzioni di output, alcune delle quali sono trattate in questo Padroneggiare il webcast JMP .
Una nota molto importante da fare: quando si eseguono operazioni come R Get () , il nome della variabile R deve essere il nome come un'espressione JSL (cioè non una stringa). R Get ("var") , che non è corretto, non è equivalente a R Get (var) , che è corretto.
Infine, un problema a cui mi sono imbattuto durante l'utilizzo dell'interfaccia JMP-R è che ho fatto affidamento sull'input dell'utente per determinare i parametri per queste funzioni. In questo caso, vorrei usare Eval (Parse ()) per eseguire questi comandi dell'interfaccia JMP-R. Per esempio:
Eval(Parse(varName || " = R Get(" || userInputValue || ");"));
o
Eval(Parse("dt << New Column(userInputForColumnName, " || userInputForColumnType || ", Values(" || stringNameOfListVariable || "));"));
Altre funzioni JMP-R oltre a queste ( R Connect () , Controllo R () , ecc.) possono essere trovati nell'indice Scripting.
Buona fortuna! Mi piacerebbe sentire i tuoi pensieri riguardo a JMP all'interfaccia R sotto nei commenti.