你好,
我建立了一個執行資料分析的腳本,但需要各種使用者輸入進行配置。 在某些情況下,我想稍後執行類似的分析,但不需要重新輸入所有設定。 主腳本已經可以讀取現有變數並自動填入這些字段,因此如果我有某種方法來保存和匯入這些預設值,我就會被設定。 我希望能夠擁有多種不同的配置,而不需要編輯腳本本身來建立新的配置。
一個想法是保存一個包含一列變數名稱和一列變數值的表,但這對於不同的變數類型(數字、字串、列表)來說效果不佳。
一個更好的想法是將包含不同用例的預設設定的其他 .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 );