<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'ai lu dans le manuel (Scripting Guide, Ch. 11) où il est expliqué "Imbrication et préséance" et je me suis demandé si d'autres voudraient avoir une option qui agirait davantage comme un opérateur de pipeline magrittr opérateur en R). Donc, au lieu d'avoir à imbriquer vos messages empilés avec des parenthèses comme
((object << message1) << message2) << message3
il serait plus lisible et coule naturellement de gauche à droite
objet% >>% message1
% >>% message2
% >>% message3
Tu pourrais faire ça. Ce n'est peut-être pas la meilleure approche pour la maintenance future; une variable bien nommée peut éclaircir beaucoup.
dt = open ("C: \ Program Files \ SAS \ JMPPRO \ 13 \ Samples \ Import Data \ bigclass_L.txt")
<< selectwhere (13 <=: age <= 15) << invertRowSelection << supprime
<< newcolumn ("halfage", formule (age / 2))
<< selectwhere (row () <= 10) << invertRowSelection << deleterows;
Vous pouvez faire disparaître invertRowSelection en modifiant la condition selectWhere.
Cela fonctionne parce que j'ai choisi des messages qui ne créent pas de nouvel objet (comme << sous-ensemble). Si << sous-ensemble est utilisé, des parenthèses supplémentaires sont nécessaires pour que les messages suivants soient transmis au nouvel objet. L'utilisation d'un sous-ensemble peut être plus rapide que l'utilisation de la suppression.
Six mois plus tard, je préfère conserver quelque chose d'un peu moins monolithique:
allData = Open ("C: \ Program Files \ SAS \ JMPPRO \ 13 \ Samples \ Import Data \ bigclass_L.txt");
ageSubset = allData << selectwhere (13 <=: age <= 15) << sous-ensemble (lignes sélectionnées (1));
tenRows = ageSubset << selectwhere (Row () <= 10) << sous-ensemble (lignes sélectionnées (1));
tenRows << nouvelle colonne ("halfage", formule (age / 2));
Fermer (allData, nosave);
Fermer (ageSubset, nosave);
motiver... Je me demandais comment les autres scriptaient cet exemple R / magrittr en JSL, où ils expliquent:
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 ('/ path / to / data / file.csv')%>%
sous-ensemble (variable_a> x)%>%
transformation (variable_c = variable_a / variable_b)%>%
tête (100)