我正在为一些数据表创建一个JSL脚本,并且需要我的函数来处理列。
我可以在绘图事件期间使用函数对列进行操作,但不能使用标准操作。
这是一个有效的例子。这会对当前数据表进行处理并绘制:Column1
的分布,这恰好是标称字符,其中包含4个唯一项。
a = Function(
{col}, // Function parameters
{Default Local}, // Local variables
Distribution(
Nominal Distribution(
Column( col ),
Horizontal Layout( 1 ),
Vertical( 0 )
);
);
);
dt = Current Data Table();
a(Expr(:Column1));
请注意Expr()
周围的:Column1
。如果没有这个,分配功能就不起作用。
我尝试做的是以下内容,但它不起作用。它应该做的是显示:Column1
中唯一项目的数量。
a = Function(
{col}, // Function parameters
{Default Local}, // Local variables
retval = associative array(col);
Show(nitems(retval));
);
dt = Current Data Table();
a(Expr(:Column1));
Returns in Log Window:
N Items(retval) = 0; // Should be 4
如果我在不尝试将其包装在函数中的情况下运行脚本,那么它可以正常工作:
retval = associative array(:Column1);
Show(nitems(retval));
Returns in Log Window:
N Items(retval) = 4; // My column happens to have 4 unique entries in it.
我相当肯定我的问题与函数中的命名空间有关,但我似乎无法弄明白。有没有人有任何建议?
答案 0 :(得分:1)
(从我所见过的)只是一个范围操作符的问题:in:Column1。
尝试使用
a = Function(
{col}, // Function parameters
{Default Local}, // Local variables
retval = associative array(col<<Get Values)<<Get Keys;
Show(nitems(retval));
);
dt = Current Data Table();
a(column(dt, "Column1"));
它返回了
N Items(retval) = 9;