こんにちは、
データ分析を実行するスクリプトを作成しましたが、構成するにはさまざまなユーザー入力が必要です。 後で同様の分析を実行したい場合がありますが、すべての設定を再入力する必要はありません。 メイン スクリプトはすでに既存の変数を読み取り、それらのフィールドに自動入力できるため、これらのデフォルト値を保存してインポートする何らかの方法があれば、設定は完了します。 複数の異なる構成を使用できるようにしたいのですが、スクリプト自体を編集して新しい構成を作成する必要はありません。
1 つのアイデアは、変数名の列とその値の列を含むテーブルを保存することでしたが、これはさまざまな変数タイプ (数値、文字列、リスト) ではうまく機能しませんでした。
より良いと思われるアイデアは、さまざまなユースケースのデフォルト設定を含む他の .jsl ファイルを共有名前空間に保存し、メイン スクリプトを実行する前に関連するファイルを実行することです。 構成ファイルを手動で作成するのではなく、スクリプト内から作成できるようにしたいと考えています。
新しいjslファイルの保存に関する他の投稿を見つけました。 https://community.jmp.com/t5/Discussions/how-do-you-create-a-new-script-file-from-jsl/td-p/34740
JSL 引用符を設定して、変数の現在の値をその引用符に置き換えることができるように思えますが、NameExpr はそのために機能しません。 文字列は引用符なしで置換され、リストは単に List として表示され、数値は無視されます。 これを機能させるためのわずかな変更、または同じ目標を達成するためのより良い方法はありますか?
ありがとう!
names default to here (1);
//namespace for the shared variables
If( !Namespace Exists( "TestNS" ), New Namespace( "TestNS" ) );
//the variables I want to save for later
TestNS:a = 5;
TestNS:b = "text";
TestNS:c = {1,2,3,4};
TestNS:d = {"a","b","c","d"};
//set up script to save as JSL
script = JSL Quote(
TestNS:a = a_dv;
TestNS:b = b_dv;
TestNS:c = c_dv;
TestNS:d = d_dv;
);
//substitute the dummy values for the current values... this isn't working
substitute Into (script, expr(a_dv), nameexpr (TestNS:a));
substitute Into (script, expr(b_dv), nameexpr (TestNS:b));
substitute Into (script, expr(c_dv), nameexpr (TestNS:c));
substitute Into (script, expr(d_dv), nameexpr (TestNS:d));
show(script);
//save script for later use
Save Text File( "$downloads\MyScript.jsl", script );