Hallo zusammen,
Ich habe Schwierigkeiten zu verstehen, warum der folgende Code fehlschlägt:
// This code doesn't work
dt = Current Data Table();
selectedCol = dt << Get Selected Columns();
If( Col Mean( selectedCol[1] ) < Col Mean( selectedCol[2] ),
begin = selectedCol[1];
end = selectedCol[2];
,
begin = selectedCol[2];
end = selectedCol[1];
);
Ich möchte, dass die gesamte Spalte den Anfangs- und Endvariablen zugewiesen wird. Dies geschieht jedoch nicht. Ich habe das versucht:
// This code still doesn't work
dt = Current Data Table();
selectedCol = dt << Get Selected Columns();
If( Col Mean( As Column( selectedCol[1] ) ) < Col Mean( As Column( selectedCol[2] ) ),
begin = As Column( selectedCol[1] );
end = As Column( selectedCol[2] );
,
begin = As Column( selectedCol[2] );
end = As Column( selectedCol[1] );
);
Kann ich sowohl konzeptionelle als auch praktische Hilfe bekommen? Das scheint sehr einfach zu sein, aber mir fehlt offensichtlich etwas Wichtiges.
John
Danke, danke, Julian!
Das ist unglaublich hilfreich !!!!
John
Hallo @John madden .
Zwei Dinge, die ich hier bemerke. Zunächst wertet JSL verschachtelte Funktionen von außen aus ein, dh Sie benötigen ein Eval () für den Verweis auf die Spalte, die Teil Ihrer Liste ist. Zweitens: Wenn ich Sie richtig verstanden habe, möchten Sie, dass alle zugewiesenen Spaltenwerte beginnen und enden. Wenn ja, müssen Sie eine Nachricht an die Spalte senden, um diese Werte zurückzugeben: << Werte abrufen. Folgendes sollte funktionieren (vorausgesetzt, das ist Ihre Absicht!).
dt = Current Data Table();
selectedCol = dt << Get Selected Columns();
If( Col Mean( eval(selectedCol[1]) ) < Col Mean( eval(selectedCol[2]) ),
begin = selectedCol[1] << Get Values;
end = selectedCol[2] << Get Values;
,
begin = selectedCol[2] << Get Values;
end = selectedCol[1] << Get Values;
);
Ich hoffe das hilft!
@julianisch
Edit: Ich kann sehen, wie jemand bei verschachtelten Funktionen auf meinen Punkt schaut und sagt: "Warte, Col Mean (selectedCol [1])" ist keine verschachtelte Funktion. Warum funktioniert das nicht? Tatsächlich ist das Abonnieren eine Funktion, sie wird einfach mit Klammern durchgeführt. Sie hätten schreiben können:
Col Mean( Subscript(selectedCol,1) )
In diesem Fall ist die Verschachtelung der Funktion offensichtlich. Wenn JMP versucht, dieses Codebit auszuwerten, geschieht dies, wenn Col Mean () zuerst ausgewertet wird und für diese Funktion eine Spalte benötigt wird. Es trifft eine Subscript () - Funktion und weiß nicht, was damit zu tun ist. Indem wir also Subscript () in Eval () einfassen, weisen wir JMP an, zuerst die Subskription zu verarbeiten (die einen Verweis auf eine Spalte zurückgibt), bevor versucht wird, Col Mean () auszuwerten.
Col Mean( Eval( Subscript( selectedCol,1 ) ) )
Ich hoffe die zusätzliche Erklärung hilft!