UN question sur l'utilisation d'ensembles de noms de colonnes. Vous pouvez utiliser les tableaux associatifs de JSL pour effectuer des opérations d'ensemble. Les méthodes <
// make three sets
rgb = associativearray({"red","green","blue"});
cmy = associativearray({"cyan","magenta","yellow"});
bw = associativearray({"black","white"});
// join them together
all = rgb;
all<<INSERT></INSERT>
La question a été posée en termes d'ensembles de noms de colonnes, et cet exemple utilise l'opération d'ensemble de tableau associatif < pour obtenir la différence entre l'ensemble de toutes les colonnes et l'ensemble des colonnes contenant la lettre "i".
// keep only the columns with an "i" in the name
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
allnames = dt << getcolumnnames( "string" );
inames = {};
For( i = 1, i <= N Items( allnames ), i++,
If( Contains( allnames[i], "i" ),
Insert Into( inames, allnames[i] )
)
);
allset = Associative Array( allnames ); // {"name", "age", "sex", "height", "weight"}
iset = Associative Array( inames ); // {"height", "weight"}
allset << Remove( iset ); // the "not i" set...
notinames = allset<<GETKEYS></GETKEYS>
C'est très gentil.Je n'avais pas pensé à utiliser des tableaux associatifs comme celui-ci.J'ai eu des situations dans le passé où j'ai utilisé une liste de références d'objets, et je voulais rechercher dans la liste pour éliminer les objets qui remplissaient certaines conditions.L'utilisation des opérations de liste était assez lente et la logique de contrôle était compliquée.Je peux voir comment cela rendrait les choses beaucoup plus faciles.Je copie et colle votre exemple de code à ajouter à ma "collection JSL" pour référence future !