Betreff: Ausdruck in Liste einfügenDer erste Abschnitt, in dem ich Ausdrücke in eine Liste einfügen möchte, kann leicht mit der folgenden Codezeile gelöst werden.
insert into( newlist, name expr( name_arg ) );
Auf die Lösung des nächsten Abschnitts!
Betreff: Ausdruck in Liste einfügenIch habe den zweiten Teil des Skripts zum Laufen gebracht, den mit den Interaktionsbedingungen!
</CODE></PRE><P> </P><PRE><CODE class=" language-jsl">for( a = 1, a <= N items( collist2 ), a++,
// Empty arg to identify cols by names
name_arg = Expr( column() );
name_arg2 = Expr( column() );
// For whatever the match below, the result must be added to newlist2
// Regex works, as per regex101.com
if( !contains( collist2[a], "*" ), insert into( name_arg, eval insert( collist2[a] ) );
insert into( newlist2, name expr( name_arg ) ), // single term insert, refer to basic needs flow above
insert into( name_arg, eval insert( regex( collist2[a], "^(.*)\*(.*)$", "\1" ) ) ); // Breaks apart 1st group to insert into column()
insert into( name_arg2, eval insert( regex( collist2[a], "^(.*)\*(.*)$", "\2" ) ) ); // Breaks apart 2nd group to insert into column()
insert into( newlist2, Eval Expr( expr( name_arg )*expr( name_arg2 ) ) );
);
);
show( newlist2 );
Output:
newlist2 = {Column("Col 1"), Column("Col 2"), Column("Col 3"), Column("Col 4"), Column("Col 5"), Column("Col 1") * Column("Col 2"), Column("Col 2") * Column("Col 4"), Column("Col 5") * Column("Col 5")};Hoffentlich hilft dies anderen beim Erlernen von Ausdrucksmanipulationen. Es ist ein langer Weg – aber er ist kraftvoll und es lohnt sich! 
Ausdruck in Liste einfügenHallo,
Ich lerne, mit Ausdrucksmanipulationen zu arbeiten, und es fällt mir schwer, mich damit auseinanderzusetzen.
Im ersten Abschnitt des folgenden Codes kann ich den Spaltennamen der Zeichenfolge erfolgreich in den Ausdruck column() einfügen, aber ich kann die generierten Ausdrücke nicht in eine Liste einfügen.
Der zweite Abschnitt zerlegt Interaktionsterme (dies ist eine Effektliste von SLS), fügt sie in ihren eigenen column()-Ausdruck ein, setzt sie wieder als Interaktionsterm zusammen und fügt diesen dann in eine Liste ein.Dieser Abschnitt funktioniert nicht.
Hat jemand hilfreiche Tipps oder sieht etwas, das ich in Bezug auf die Funktionsweise von Ausdrucksmanipulationen falsch verstehe?Danke im Voraus!
Namen sind standardmäßig hier (1); // Grundvoraussetzung unten - funktioniert aber nur für einzelne Spaltennamen collist = { "Col 1", "Col 2", "Col 3", "Col 4", "Col 5" }; NeueListe = {}; for( i = 1, i <= N items(collist), i++, // Leeres Argument, um Spalten nach Namen zu identifizieren name_arg = Expr( column() ); insert into( name_arg, eval insert( collist[i] ) ); // Ergebnis: Spalte ("Spalte 1") oder andere eingefügte Spalten <-- Funktioniert wie vorgesehen show( name_arg ); // Zeigt erfolgreiches Einfügen in's insert into( newlist, insert into( name_arg, eval insert( collist[i] ) ) ); // Verschachteltes Einfügen in funktioniert nicht // Muss das Ergebnis des ersten Einfügens einfügen in, in newlist ); show( neueliste ); // Zeigt derzeit eine leere Liste an //////////////////////////////////////// FUNKTIONIERT NICHT , UNTEN // Fortgeschrittener Fluss - Interaktionserkennung collist2 = { "Col 1", "Col 2", "Col 3", "Col 4", "Col 5", "Col 1*Col 2", "Col 2*Col 4", "Spalte 5*Spalte 5" }; neueliste2 = {}; for( a = 1, a <= N items( collist2 ), a++, // Leeres Argument, um Spalten nach Namen zu identifizieren name_arg = Expr( column() ); // Unabhängig von der Übereinstimmung unten muss das Ergebnis zu newlist2 hinzugefügt werden // Regex funktioniert gemäß regex101.com if( !contains( collist2[a], "*" ), insert into( name_arg2, eval insert( collist2[a] ) ), // single term insert, beziehen sich auf grundlegende Anforderungen flow above insert into( name_arg2, eval insert( regex( collist2[a], "^(.*)\*(.*)$", "\1" ) ) ); // Zerlegt die erste Gruppe, um sie in die Spalte einzufügen () insert into( name_arg2, eval insert( regex( collist2[a], "^(.*)\*(.*)$", "\2" ) ) ); // Zerlegt die zweite Gruppe, um sie in die Spalte einzufügen () // Die folgende Zeile ist ein Mockup der Wiedervereinigung der ersten und zweiten Gruppe als Interaktionsterme - funktioniert nicht //eval expr( expr( insert into( name_arg2, eval insert( regex( mylist2[a], "^(.*)\*(.*)$", "\1" ) ) )*insert into( name_arg2, eval insert( regex( mylist2[a], "^(.*)\*(.*) $", "\2" ) ) ); ) ); Gewünschte_Ausgabe = { Spalte("Spalte 1"), Spalte("Spalte 2") , Spalte("Spalte 3"), Spalte("Spalte 4"), Spalte("Spalte 5"), Spalte("Spalte 1")*Spalte("Spalte 2"), Spalte("Spalte 2")*Spalte ("Spalte 4"), Spalte ("Spalte 5")*Spalte ("Spalte 5") };SkripterstellungFenster