0

我正在为我的一些数据表创建一个 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.

我相当确定我的问题与函数内部的命名空间有关,但我似乎无法弄清楚。有没有人有什么建议?

4

1 回答 1

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; 
于 2014-11-21T19:47:50.823 回答