Operazioni sugli insiemi JSLUN domanda sull'utilizzo di insiemi di nomi di colonne. È possibile utilizzare gli array associativi di JSL per eseguire operazioni sugli insiemi. I metodi <
// 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 domanda è stata posta in termini di set di nomi di colonne e questo esempio utilizza l'operazione set di array associativi < per ottenere la differenza tra l'insieme di tutte le colonne e l'insieme di colonne contenenti la lettera "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>
Overlapping red, green, blue ringsOverlapping red, green, blue ringsOverlapping red, green, blue ringsOverlapping red, green, blue ringsAnelli rossi, verdi, blu sovrapposti
Utilizzo di array associativi come insiemi. Intersezione, Unione, Differenza.
Ri: Operazioni sugli insiemi JSLQuesto è molto carino.Non avevo pensato di usare array associativi come questo.In passato ho avuto situazioni in cui ho utilizzato un elenco di riferimenti a oggetti e volevo cercare nell'elenco per eliminare gli oggetti che soddisfacevano determinate condizioni.L'uso delle operazioni di elenco era piuttosto lento e la logica di controllo era complicata.Posso vedere come questo lo renderebbe molto più facile.Sto copiando e incollando il tuo codice di esempio da aggiungere alla mia "raccolta JSL" per riferimento futuro!