<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ho letto nel manuale (Scripting Guide, Ch 11) dove spiega "Nesting and Precedence" e mi chiedevo se altri vorrebbero avere un'opzione che agisse più come un operatore di pipeline (non diversamente dal%>% magrittr operatore in R). Quindi, invece di dover annidare i tuoi messaggi impilati con parentesi come
((oggetto << messaggio1) << messaggio2) << messaggio3
sarebbe più leggibile e fluire naturalmente da sinistra a destra
oggetto% >>% messaggio1
% >>% messaggio2
% >>% messaggio3
Potresti farlo Potrebbe non essere l'approccio migliore per la manutenzione futura; una variabile ben denominata può chiarire molto.
dt = open ("C: \ Programmi \ SAS \ JMPPRO \ 13 \ Samples \ Import Data \ bigclass_L.txt")
<< selectwhere (13 <=: età <= 15) << invertRowSelection << DeleteRows
<< newColumn ( "halfage", la formula (età / 2))
<< selectwhere (riga () <= 10) << invertRowSelection << DeleteRows;
È possibile disattivare la funzione invertRowSelection cambiando la condizione selectWhere.
Funziona perché ho scelto messaggi che non creano un nuovo oggetto (come << sottoinsieme). Se si utilizza << subset, sono necessari ulteriori paren per rendere i messaggi successivi al nuovo oggetto. L'utilizzo di sottoinsieme potrebbe essere più rapido rispetto all'utilizzo di Elimina.
Sei mesi dopo, preferirei mantenere qualcosa di un po 'meno monolitico:
allData = Apri ("C: \ Programmi \ SAS \ JMPPRO \ 13 \ Samples \ Import Data \ bigclass_L.txt");
ageSubset = allData << selectwhere (13 <=: age <= 15) << sottoinsieme (righe selezionate (1));
dieciRows = ageSubset << selectwhere (Row () <= 10) << sottoinsieme (righe selezionate (1));
dieci righe << Nuova colonna ("halfage", formula (age / 2));
Close (allData, nosave);
Chiudi (ageSubset, nosave);
motivare... Mi chiedevo come altri avrebbero scritto questo esempio di R / magrittr in JSL, dove spiegavano:
Four operations are performed to arrive at the desired data set, and they are written in a natural order: the same as the order of execution. Also, no temporary variables are needed. If yet another operation is required, it is straight-forward to add to the sequence of operations wherever it may be needed.
the_data <-
read.csv ('/ percorso / per / data / file.csv')%>%
sottoinsieme (variabile_a> x)%>%
transform (variable_c = variable_a / variable_b)%>%
testa (100)