Verwenden numerischer Objekte in einer SpaltengleichungIch muss ein numerisches Objekt, das in einer iterativen Funktion zunimmt oder abnimmt, in einer Spaltenformel verwenden können. In der folgenden Gleichung müssen die Werte von col, l und m in der Spaltenformel ausgewertet werden. Wie kann ich das erreichen? Parse(), Eval() und Num() funktionieren nicht.
For( i = 1, i <=8, i++,
col = 11+i;
l = col - i;
m = col + 1 - i;
colno = Char(col);
New Column("Column "||colno, Character, "Nominal", Formula(If(Row() == 12, Lag(Column(1), l), If(Row() == 13, Lag(Column(2), m), Lag(Column(col, 1)))))));
Automatisierung und SkriptingBetreff: Verwenden numerischer Objekte in einer SpaltengleichungDies scheint zu funktionieren. Eval( Eval Expr(....) ) wertet die Ausdrücke aus, bevor die Spalte erstellt wird.
For( i = 1, i <= 8, i++,
col = 11 + i;
l = col - i;
m = col + 1 - i;
colno = Char( col );
Eval(
Eval Expr(
New Column( "Column " || Expr( colno ),
Character,
"Nominal",
Formula(
If( Row() == 12,
Lag( Column( 1 ), Expr( l ) ),
If( Row() == 13,
Lag( Column( 2 ), Expr( m ) ),
Lag( Column( Expr( col ), 1 ) )
)
)
)
)
)
);
);
Betreff: Verwenden numerischer Objekte in einer SpaltengleichungColumn( col, 1 )
?

Betreff: Verwenden numerischer Objekte in einer SpaltengleichungInnerhalb der neuen Spalte() -Nachricht sollten keine Variablen verwendet werden, die außerhalb der neuen Spaltennachricht definiert sind.
In meinem Unternehmen haben wir eine automatische Prüfung, die solche Programmierprobleme erkennt, bevor der Code ausgeführt wird.
Wenn ein potenzieller Fehler erkannt wird, wird dem Benutzer eine Warnmeldung mit einigen Vorschlägen angezeigt.
Betreff: Ausdrucksbehandlung in JMP: Tipps und Falltüren
For( i = 1, i <= 8, i++,
col = 11 + i;<BR />
l = col - i;
m = col + 1 - i;
colno = Char( col );
Eval(Eval Expr(New Column( "Column " || colno,
Character,
"Nominal",
Formula(
If( Row() == 12,
Lag( Column( 1 ), Expr(l) ),
If( Row() == 13,
Lag( Column( 2 ), Expr(m) ),
Lag( Expr(Name Expr(As Column( col))), 1 )
)
)
)))
);
);
Autsch! Da die Spalte keine Zahlen versteht ...
Betreff: Verwenden numerischer Objekte in einer SpaltengleichungFor( i = 1, i <= 8, i++,
col = 11 + i;
colname = Column(col) << get name;
l = col - i;
m = col + 1 - i;
colno = Char( col );
Eval(Eval Expr(New Column( "Column " || colno,
Character,
"Nominal",
Formula(
If( Row() == 12,
Lag( Column( 1 ), Expr(l) ),
If( Row() == 13,
Lag( Column( 2 ), Expr(m) ),
Lag( Expr(Name Expr(As Column( colname))), 1 )
)
)
)))
);
);
Betreff: Verwenden numerischer Objekte in einer SpaltengleichungGuter Fang.
Betreff: Verwenden numerischer Objekte in einer Spaltengleichung@hogi
Ich habe eine Modifikation des Skripts von mmarchandFSLR (siehe unten) erhalten, die einwandfrei funktioniert, eine tolle Ergänzung. Ich bin mir nicht sicher, ob ich das Problem verstehe. Bitte klären Sie es.
dt = Current Data Table();
Delete Symbols();
dt = Current Data Table();
For( i = 1, i <= 8, i++,
c = 11 + i;
l = 12 - i;
m = 13 - i;
colno = Char( c );
Eval(Eval Expr(New Column( "Column " || colno,
Character,
"Nominal",
Formula(
If( Row() == 12,
Lag( As Column( 1 ), Expr(l) ),
If( Row() == 13,
Lag( As Column( 2 ), Expr(m) ),
Lag( As Column( Expr(c)) , 1)
)
)
)))
);
);
Betreff: Verwenden numerischer Objekte in einer SpaltengleichungZuerst hat es mich umgehauen, dass selbst nach der Korrektur der Details um
Column( col, 1 )
Die Lösung von @mmarchandFSLR scheint nicht zu funktionieren.
Verzögerung() erwartet Als Spalte() , nicht Spalte() ?!??!
Dies zerstört mein gesamtes „Wissen“ darüber, wie Als Spalte() zum Zugriff auf den Wert der aktuellen Zeile verwendet wird!
Bezüglich Als Spalte (col) statt Name Expr(As column(col)):
Es funktioniert – ist aber „anfällig“ gegenüber:
- Hinzufügen einer Spalte (die Nummer wird nicht aktualisiert!)
- geänderte Einträge (auf meinem System werden die Einträge der Formelspalte nicht aktualisiert?!?)
[Ich werde dieses löschen, wenn sich die Situation nach einem Neustart bessert]
Betreff: Verwenden numerischer Objekte in einer SpaltengleichungScheint dokumentationswürdig:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "height 2", Formula( :height ));
New Column( "height 3", Formula( As Column( "height" ) ));
New Column( "height 4", Formula( As Column( 4 ) ));
New Column( "height 5", Formula( Column( 4 )[Empty()] ));
wait(0);
dt[5::10, "height"] = 1;
wait(0);
New window(<< type("modal dialog"), Text Box ("just height 1 got updated ... continue"));
dt << Move Selected Columns( {:height}, after( :name ) );
New window(<< type("modal dialog"), Text Box ("no big difference - now let's recalc"));
dt << rerun formulas();
vorher nachher

- Der Interpreter der Spaltenformel versteht Column(4) und As Column (4), Column("height") und so weiter ....
Aber der Mechanismus, der Spalten aktualisiert, wenn sich Eingabespalten ändern – tut das nicht? Muss man die Aktualisierung manuell auslösen?
- Wenn die Spalte an eine andere Stelle verschoben wird, wird die Nummer nicht aktualisiert.
Ich werde niemals Zahlen in Spaltenreferenzen verwenden!
Ich werde nie etwas wie Spalte ("Höhe") verwenden.
Lustige Tatsache:
Dem Formel-Editor gefällt es auch nicht:

Betreff: Verwenden numerischer Objekte in einer SpaltengleichungIch hätte wohl meinen dunklen Zweck beschreiben sollen. Ich habe einen Tisch, der sich nicht entscheiden kann, ob er hoch oder breit sein soll. Die Spalten 1 und 2, Zeilen 1-8, sind hoch, die Spalten 1-11 werden ab Zeile 12 breit. Dieses Skript ist Schritt 1, um der Tabelle etwas Sinn zu verleihen.
vorher nachher

Ich führe eine Reihe weiterer Schritte aus, um die Daten zu verarbeiten, aber das war der schwierige Teil.