こんにちは、JMP コミュニティです。
列に格納された複数の予測式を生成しました。パラメータを抽出して、式間で共通する変数を評価する必要があります。
dt:Column X << Get Formula を呼び出すと、出力は次のようになりますない標準のパターン抽出関数 (Words ()、Munger () など) で使用できる文字列またはリスト。
質問:
- << Get Formula を使用して数式パラメータを収集する正しい関数を使用していますか?
- そうでない場合、より適切な関数は何でしょうか?
- 「はい」の場合、<< Get 式の出力を文字列、リスト、または行列に変換するトリックはありますか?
助けてくれてありがとう。
最高、
TS
これに対する別のアプローチをここで文書化するつもりです。 (おかげで@バイロン_JMPこれについては Arg() チュートリアルを参照してください)
Arg() コマンドを使用すると、非常に簡単に操作できるリストとしてパラメータを取得できます。 また、列の式のパラメーターを連想配列として返す関数を以下に置きました。
// For a given column, col, in a data table, dt, you can get the formula column property with a message:
formula = dt:Col << Get Formula;
// the first argument of which is the parameters list which can be extracted using Arg()
params = Arg(formula, 1);
// from there you can index down to get the parameter / value pair
parameterName1 = Arg(params[1],1);
parameterValue1 = Arg(params[1],2);
そして、数式パラメータを連想配列として返す関数
// This function expects a column reference
formulaParameters = Function( {colref},
{default local},
plist = Arg( colref << Get Formula, 1 );
keys = {};
values = {};
For Each( {value, index}, plist,
Insert Into( keys, Arg( value, 1 ) );
Insert Into( values, Arg( value, 2 ) );
);
parameters = Associative Array( keys, values );
);
// Usage example:
dt = Current Data Table();
columnWithParameters = dt:Col1 << Get Column Reference();
parameterAArray = formulaParameters( columnWithParameters );数式内の変数名に興味がある場合は、数式を直接操作する方が簡単かもしれません。 以下は、数式から一意のシンボル名を抽出する例です。
dt = open("$sample_data/Reliability/Locomotive.jmp");
ex = column(dt, 3)<<GETFORMULA></GETFORMULA>かなり「オールドスクール」なので、数式を文字列として取得することで処理します。
Names Default To Here( 1 );
dt = Current Data Table();
x = Char( dt:predicted height << get formula );