JSL-Set-OperationenA Frage über die Verwendung von Sätzen von Spaltennamen. Sie können die assoziativen Arrays von JSL verwenden, um Mengenoperationen auszuführen. Die Methoden <
// 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>
Die Frage wurde in Bezug auf Sätze von Spaltennamen gestellt, und dieses Beispiel verwendet die assoziative Array-Set-Operation < um die Differenz zwischen der Menge aller Spalten und der Menge der Spalten zu erhalten, die den Buchstaben "i" enthalten.
// 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 ringsÜberlappende rote, grüne, blaue Ringe
Assoziative Arrays als Mengen verwenden. Schnittmenge, Vereinigung, Differenz.
Betreff: JSL-Set-OperationenDas ist sehr nett.Ich hatte nicht daran gedacht, assoziative Arrays wie diese zu verwenden.Ich hatte in der Vergangenheit Situationen, in denen ich eine Liste von Objektreferenzen verwendet habe, und ich wollte die Liste durchsuchen, um Objekte zu eliminieren, die bestimmte Bedingungen erfüllten.Die Verwendung von Listenoperationen war ziemlich langsam und die Steuerlogik war kompliziert.Ich kann sehen, wie dies es viel einfacher machen würde.Ich kopiere und füge Ihren Beispielcode ein, um ihn meiner "JSL-Sammlung" für zukünftige Referenz hinzuzufügen!