如何创建具有多项选择的模式选择窗口大家好,JMP社区,
我需要以下方面的帮助:我有一张表 ( dt ),其中有一个名义数字列 ( Values )。我想创建一个窗口,显示Values列的排序唯一值。然后我想选择一个或多个值并返回这些值,然后将它们传递给Select Where函数。
我绝对是 JSL 的初学者,非常感谢您的帮助。
为了解决这个问题,我创建了一个函数SelectNumericValues如下:
// function to create a modal window with selection functionality
SelectNumericValues = Function( {dt, column_name},
// Use Summarize to find unique values in the specified column
Summarize( unique_values = By( Column( dt, column_name ) ) );
// Calculate the maximum number of selections
max_selections = N Items( unique_values );
// Create a window for user selection
nw = New Window( "Select Values",
<
// call my function with table dt and nominal numeric column "Values"
selected_values = SelectNumericValues(dt, "Values");
dt_select = dt << Select Where( :Values == selected_values)
具有唯一排序值的窗口被正确呈现:

我可以选择一个或多个选项。但最终出现了以下两个错误:
- 在访问或评估“列表”时发送期望脚本对象,{/*###*/“0”、“1”、“2”}
- 名称未解析:访问或评估“按钮”时的按钮,按钮 (1) /*###*/
这表明我没有正确处理SelectNumericValues函数中的按钮,并且也没有正确处理Select Where函数中的返回值。

另外一个问题是:我将如何实现至少选择一个选项的要求(关闭未选择任何选项的模态窗口是不可能的,或者它隐含地意味着选择了所有选项)。
谢谢!
保罗
自动化和脚本视窗回复:如何创建具有多项选择的模式选择窗口我找到了一个可行的解决方案。我犯了以下错误:
- SelectNumericValues函数返回字符列表,而不是数字列表。
- Select Where函数调用需要 Contains 函数匹配数字列表。
- SelectNumericValues函数中的此行selected_values = nw << Show Window;会导致按钮相关错误(我认为)
因此,我需要将选定的值强制转换为数字。并且我需要调整Select Where函数调用。
我发现这是正确的:
// Function to generate the user selection window for numeric values
SelectNumericValues = Function( {dt, column_name},
// Use Summarize to find unique values in the specified column
Summarize( unique_values = By( Column( dt, column_name ) ) );
// Calculate the maximum number of selections
max_selections = N Items( unique_values );
// Create a window for user selection
nw = New Window( "Select Values",
<I am happy to see additional improvements from other users.回复:如何创建具有多项选择的模式选择窗口我认为您需要考虑使用数据过滤器。它将为您显示和选择。
回复:如何创建具有多项选择的模式选择窗口谢谢吉姆!
根据您的建议,我使用数据过滤功能创建了一个脚本。感谢您指出这一点,因为它是一项非常有用的数据交互式过滤功能。
我的脚本实现的主要功能是,根据用户过滤后的数据创建输出(日志,例如保存为 pdf 文档)。换句话说,这里不需要任何交互式、多变量的过滤。从这个意义上说,我在这篇文章中分享的方法对我很有用。
保罗