Es ist cool, dass benutzerdefinierte Funktionen sowohl als Teil benutzerdefinierter Formeln im Formeleditor verwendet werden können.
Mit dem Befehl „Kategorie transformieren“ wird die
New Custom Function( "myNamespace", "Add Ten", Function( {x, y = 10}, x + y ), << Transform Category( "Custom" ));aus https://www.jmp.com/support/help/en/16.2/#page/jmp/create-custom-functions-transforms-and-formats.shtml
wird im Rechtsklick-Menü „Neue Formelspalte“ angezeigt und erstellt eine Spalte mit der Formel

Ich habe gerade damit angefangen @txnelson 's Ansatz
https://community.jmp.com/t5/Discussions/Formula-for-Number-of-Unique-Categories-in-Column/mp/55284/highlight/true#M31262
um eine Spalte zu generieren Zählen Sie Einzigartig Werte - aber anstatt die Formel einzugeben, wollte ich eine benutzerdefinierte Funktion verwenden.
Die manuell generierte Formelspalte funktioniert, aber die Spalte, die die benutzerdefinierte Funktion verwendet zählen einzigartig nicht.
Es schlägt mit der Fehlermeldung fehl

Scheint, dass x in der von() Der Ausdruck wird nicht durch den Spaltennamen ersetzt.
Also, verwenden Eval(Substitute() um das Problem zu beheben?
... aber wie?
Mit
Eval(Substitute(Expr(Summarize( values = by( _col_ ) )),Expr(_col_),Name Expr(x) ));
Ich bekomme

- weil in einer Spaltenformel :x als :x[row()] behandelt wird. Argh...
In diesem Sinne frage ich mich, warum das funktioniert:

[Hinweis: Die rote Zick-Zack-Linie sagt dem Benutzer nur das drucken in einer Spaltenformel ist keine gute Idee]
Warum weiß Jmp, dass es senden muss? Werte erhalten zur SPALTE :Sex und und nicht :sex[row()].
Und warum kommt es tatsächlich zurück? :sex[row()] in der zweiten Zeile - und nicht in der Spalte :Sex ?
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Add Custom Functions(
New Custom Function(
"custom",
"count unique",
Function( {x},
As Constant( Summarize( values = by( x ) ) );
N Items( values );
),
<<TRANSFORM category=""></TRANSFORM>