2014-10-29 1 views
0

일부 데이터 테이블에 대한 JSL 스크립트를 만들고 컬럼에서 작동하는 함수가 필요합니다.JMP 스크립팅 : 왜 내 열 데이터가 함수로 전송되지 않습니까?

플로팅 이벤트 중에는 기능을 사용할 수 있지만 표준 작업에서는 사용할 수 없습니다.

다음은 작동하는 예입니다. 이것은 현재 데이터 테이블에서 작동하고 :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)); 

:Column1 주위 Expr(). 이 기능이 없으면 배포 기능이 작동하지 않습니다.


내가하려는 것은 다음과 같지만 작동하지 않습니다. 그것이해야 할 일은 :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; 
+0

를 반환했습니다. 또한 실제로 작동하도록하려면'retval = associative array (col << get values) '를 사용해야했습니다. 하지만 옳은 방향으로 나를 보냈어. 고마워! – dthor

+0

retval = associative array (col << GetValues) << retval을 사용하여 실제로 별개의 값 목록을 얻으려면 키를 가져옵니다. – Faller

+0

연관 배열은 값과 같은 수의 키를 가지므로 '연관 배열 (col << Get Values) << Get Keys (연관 배열 (col << Get Values)는'nitems (연관 배열 (col << Get Values))'. 나는 열쇠가 무엇인지, 실제로 얼마나 많은 것이 있는지 상관하지 않습니다. 'retval'은 코드를 읽기 쉽게하기위한 자리 표시 자 변수입니다. 내가 실제로 그 가치를 돌려주지는 않을 것이기 때문에 아마 잘못된 이름 일 것이다 .... – dthor

관련 문제