複数の列を入力として受け取るカスタム変換関数を作成するにはどうすればよいですか?スクリプト ガイドは、新しいカスタム変換関数を作成する方法を説明するのに非常に役立ちますが、複数の列を処理する方法についてはあまり明確ではありません。
複数の列を入力として受け取るカスタム変換関数を作成するにはどうすればよいですか? たとえば、X、Y、Z 列を選択して、これら 3 つの列の RSS (二乗和平方根) を取得したい場合はどうなりますか?
また、順序が重要である場合、その順序はどのように設定されていますか? 列が選択される順序ですか?
Re: 入力として複数の列を取るカスタム変換関数を作成するにはどうすればよいですか?funcDef = Function( { number }, { i, sum },
If( Is List( number ),
Sqrt( Summation( i = 1, N Items( number ), number[i]^2 ) ),
.
);
);
description = "This function returns the root sum squared of a list numbers.";
parmHint = "a list of numbers";
/* create function using variables
the commands can also be accepted as arguments in New Custom Function */
newAdd = New Custom Function( "mySpace", "RSS", funcDef );
newAdd << Description( description );
newAdd << Prototype( "mySpace:RSS( {} )" );
newAdd << Example( "mySpace:RSS( {1,2,3} )" );
// expr() Examples need to be passed inside NameExpr()
newAdd << Parameter( "List", parmHint );
newAdd << Formula Category( "MyNumberStuff" );
// add mySpace:RSS function to system
Add Custom Functions( newAdd );Re: 入力として複数の列を取るカスタム変換関数を作成するにはどうすればよいですか?すみません、私はとても遅いです、私はそれを行う方法がわかりません。Re: 入力として複数の列を取るカスタム変換関数を作成するにはどうすればよいですか?では、Here 名前空間を独自のものに置き換えます。
Re: 入力として複数の列を取るカスタム変換関数を作成するにはどうすればよいですか?その関数をコピーして新しい JSL スクリプトに貼り付けて実行しましたが、ログに次のエラーが表示されます:「定義済みの JMP 名前空間を再定義できません」Re: 入力として複数の列を取るカスタム変換関数を作成するにはどうすればよいですか?リストを受け取り、同じ計算を返す新しい関数を次に示します。
Names Default to Here( 1 );
// example
my numbers = List( 1, 2, 3, 4, 5 );
// define it
funcDef = Function( { number }, { i, sum },
If( Is List( number ),
Sqrt( Summation( i = 1, N Items( number ), number[i]^2 ) ),
.
);
);
// test it
Show( funcDef( my numbers ) );Re: 入力として複数の列を取るカスタム変換関数を作成するにはどうすればよいですか?リストパラメーターを調べます、thx。
二重引用符で何を話しているのか、またはカスタム関数と変換を提供する JMP に関するコメントの根拠がわかりません。Re: 入力として複数の列を取るカスタム変換関数を作成するにはどうすればよいですか?二重引用符で囲まれたものは避けます。 通常、永続的な価値はありません。 JMP は、カスタム関数とカスタム変換を提供します。 意図したとおりに使用しないのはなぜですか?
関数が可変数の引数で動作する必要がある場合は、スカラー パラメーターの代わりに常にリスト パラメーターを使用できます。
Re: 入力として複数の列を取るカスタム変換関数を作成するにはどうすればよいですか?返信ありがとう、マーク! いくつかの簡単なフォローオンの質問:
1. JMP が複数列の変換機能を*サポート*していることは知っていますが、複数列の *カスタム* 変換をまだサポートしていないということですか?
2. あなたの関数は 3 つの引数を取ります -- 任意の数の引数を取る関数を定義することは可能ですか?Re: 入力として複数の列を取るカスタム変換関数を作成するにはどうすればよいですか?あなたのケースにはカスタム関数の方が適していると思います。 カスタム変換は単一の入力に制限されています。 カスタム機能はこのように制限されていません。
funcDef = Function( {x, y, z}, Sqrt( Sum( x^2, y^2, z^2 ) ) );
description = "This function returns the root sum squared of three numbers.";
// examples can be multiple statements inside expr()
ex2 = Expr(
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Here:RSS( :age[1], :age[2], :age[3] );
);
parmHint1 = "x value";
parmHint2 = "y value";
parmHint3 = "z value";
/* create function using variables
the commands can also be accepted as arguments in New Custom Function */
newAdd = New Custom Function( "Here", "RSS", funcDef );
newAdd << Description( description );
newAdd << Prototype( "Here:RSS(x,y,z)" );
newAdd << Example( "Here:RSS(1,2,3)" );
// expr() Examples need to be passed inside NameExpr()
newAdd << Example( Name Expr( ex2 ) );
newAdd << Parameter( "Number", parmHint1 );
newAdd << Parameter( "Number", parmHint2 );
newAdd << Parameter( "Number", parmHint3 );
newAdd << Formula Category( "NumberStuff" );
// add myNamespace:Add Ten function to system
Add Custom Functions( newAdd );
関数内の式には、適切な順序の必要性に対処するためのロジックが含まれる場合があります。