嗨,JMP社区,
我一直在玩一个简短的脚本来根据开始和结束字符串自动对列进行分组。虽然在我的本地计算机上可以正常工作,但我想知道是否有更好的方法可以保留以下文本编辑框的默认条目:运行而不是将这些默认条目保存在单独的文件中?
到目前为止,这是我的代码:是否有任何改进建议?
Names Default to Here (1);
dt = Current Data Table ();
CList = dt << get column names (string);
GList = {};
NCol = N Items (CList);
Try (dat = open("C:\AUTODAT.JMP", Invisible),
dat = new table ("AUTODAT", Invisible,
Add Rows (2),
New Column ("Entries", Character, Nominal, set values ({"NEW START", "NEW END"}))
);
);
DefStart = column (dat, "Entries") [1];
DefEnd = column (dat, "Entries") [2];
Dlg = New Window (" AUTO-GROUPING: ENTER SEARCH STRINGS",
<< Modal,
Border Box (top (15), Bottom (15), Left (40), Right (40),
V List Box (
Text Box ("ENTER START STRING:"),
ST = Text Edit Box (DefStart, Set Width (200)),
Spacer Box (0,25),
Text Box ("ENTER END STRING:"),
ET = Text Edit Box (DefEnd, Set Width (200)),
Spacer Box (0,25),
Button Box ("OK",
StartString = ST << Get Text ();
EndString = ET << Get Text ()
),
Button Box ("CANCEL",
Close( dat, NoSave );
Throw (1))
)
)
);
Column (dat, "Entries") << set values (Eval List ({StartString, EndString}));
dat << Save As ("C:\AUTODAT.JMP", 1);
Close (dat, NoSave);
Switch = ((Length (StartString) > 0) * 10) + (Length (EndString) > 0);
For (i = 1, i <= NCol, i++,
Match (Switch,
11,
if(Starts With (CList [i], StartString) & Ends With (CList [i], EndString),
Insert into (GList, CList [i])),
10,
if(Starts With (CList [i], StartString),
Insert into (GList, CList [i])),
1,
if(Ends With (CList [i], EndString),
Insert into (GList, CList [i])),
0, Throw (1)
)
);
Group = dt << Group Columns (GList);处理已保存的数据表的标准方法是将需要保存的值保存为JSL。我只是使用所需的JSL创建文本字符串以初始化值并使用Save Text File()保存它。然后在随后的运行中,我仅使用Include()来初始化值。