<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo, ich möchte schnell mehrere Spalten mit der gleichen Gesamtformel, aber unterschiedlichen Variablen eingeben.
Ich habe Folgendes versucht, aber offensichtlich verwende ich nicht die richtige Syntax, um das Fomula-Element in der Funktion "Neue Spalte" aufzurufen:
Namen standardmäßig hier (1);
dt = aktuelle Datentabelle ();
cc = Ncol (dt); // Behalten Sie die ursprüngliche Spaltennummer bei
Für (i=9,i<= cc, i = i+2,
Neue Spalte ("Delta " || Spaltenname (i+1),
numerisch,
kontinuierlich,
Formel (:Spaltenname(i+1) - :Spaltenname (i)) // Problem mit der Syntax
);
);
Ich danke Ihnen für Ihre Hilfe.
Aufrichtig.
Dieses Skript könnte dem, was Sie suchen, etwas nahekommen.Der Formula-Parameter für die New Column-Funktion benötigt eine vollständig erstellte Formel in der Form, in der sie sich befinden muss, wenn sie tatsächlich ausgeführt wird, also nachdem Ihr Skript ausgeführt wurde.Die folgende Strategie eval( evalexpr( ... expr(...) ... expr(...) ... ) ) ist eine Möglichkeit, das zu tun, was Sie brauchen.expr() wird verwendet, um die Teile zu markieren, die ausgewertet werden müssen.evalexpr() jagt sie und wertet sie aus.eval() wertet den von evalexpr zurückgegebenen Ausdruck aus.Beachten Sie, dass das Minus zwischen den beiden expr() NICHT innerhalb der for-Schleife ausgewertet wird, aber names[i+1] WIRD ausgewertet (von evalexpr) und NewColumn WIRD ausgewertet (von eval).
<
dt = Neue Tabelle( "Ohne Titel",
Zeilen hinzufügen ( 1 ),
New Column( "a", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [1] ) ),
New Column( "b", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [2] ) ),
New Column( "c", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [4] ) ),
New Column( "d", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [8] ) ),
New Column( "e", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [16] ) ),
New Column( "f", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [32] ) )
);
cc = Ncol (dt);
names=dt<
Für( i = 1, i <= cc, i = i + 2,
Eval( // werte den zurückgegebenen Ausdruck aus...
Eval Expr( // werte den eingebetteten Ausdruck aus...
New Column( "Delta " || char(names[ i + 1 ]), // Konvertiere die Spalte in einen String
numerisch, fortlaufend,
// Formel wird nicht alleine ausgewertet.Benötigt für diesen Fall ZWEI expr
Formel( Ausdr( Namen[ i + 1 ] ) - Ausdr( Namen[ i ] ) )
)
)
)
);
/* ----- resultierendes Skript -----
Neue Tabelle ("Ohne Titel",
Zeilen hinzufügen ( 1 ),
New Column( "a", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [1] ) ),
New Column( "b", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [2] ) ),
New Column( "c", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [4] ) ),
New Column( "d", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [8] ) ),
New Column( "e", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [16] ) ),
New Column( "f", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [32] ) ),
New Column( "Delta b", Numeric, "Continuous", Format( "Best", 10 ), Formula(
- :A ) ),
Neue Spalte( "Delta d", Numerisch, "Kontinuierlich", Format( "Best", 10 ), Formel( :d - :c ) ),
Neue Spalte( "Delta f", Numerisch, "Kontinuierlich", Format( "Best", 10 ), Formel( :f - :e ) )
)
*/
