JMP Scripting: Почему данные моего столбца не отправляются в функцию?
Я создаю сценарий 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.
Я вполне уверен, что моя проблема связана с пространством имен внутри функции, но я не могу понять это. У кого-нибудь есть предложения?
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;