일치하는 쌍 스크립트에 대한 사용자 입력일치하는 쌍에 대한 JMP 스크립트를 만들고 싶습니다. 여기서 사용자는 일치하는 쌍에 대한 열을 입력한 다음 입력된 선택된 열을 가져올 수 있습니다.
그래서 뭔가
dt=현재 데이터 테이블();
일치하는 쌍();
Y, 대응 응답 << 선택됨;
그런 다음 내 수식에서 선택한 열을 사용하고 싶습니다. 그러나 열을 선택하는 방법을 알 수 없습니다.
Re: 일치하는 쌍 스크립트에 대한 사용자 입력나는 이것을 2 단계 스크립트로 작동시킵니다. 찾으시면 알려주세요. 이것들을 합쳐서 애드인으로 만들고 싶습니다.
Re: 일치하는 쌍 스크립트에 대한 사용자 입력일반적으로 스크립트는 사용자에게 분석할 열을 선택하도록 요청하는 모달 대화 상자를 표시합니다. 사용자가 대화 상자를 닫으면 대화 상자를 언로드합니다. 이제 플랫폼을 시작하고 다른 계산을 계속할 열이 있습니다.
실행 대화 상자를 사용하는 방법에 대한 최근 논의가 있었지만 플랫폼에 대한 참조를 얻고 나머지 스크립트의 평가를 제어합니다. 지금은 못찾겠어요...
Re: 일치하는 쌍 스크립트에 대한 사용자 입력일치하는 쌍 플랫폼을 실행하고 일치하는 쌍에 넣은 열을 가져온 다음 추가 계산에 해당 열을 사용하는 스크립트를 수행하려고 합니다.
Re: 일치하는 쌍 스크립트에 대한 사용자 입력나는 당신이하려는 것을 이해하지 못합니다. 스크립트를 실행하기 전에 사용자가 이미 Matched Pairs 플랫폼을 열어 놓고 Y 역할에서 데이터 열을 검색해야 한다고 생각했습니다. 귀하의 코드(아래)는 대신 Matched Pairs 시작 대화 상자를 엽니다.
dt = current data table();
Matched Pairs();
따라서 참조할 개요 상자가 없습니다.
Re: 일치하는 쌍 스크립트에 대한 사용자 입력방금 이렇게 했습니다.
dt= 현재 데이터 테이블 ();
일치하는 쌍 ();
// Matched Pairs 플랫폼을 찾고 이에 대한 표현을 얻습니다.
창 = 창 목록 가져오기 ();
을 위한 ( 승 = 1 , w <= N개 항목 ( 윈도우 ), w++,
제목 = 창[w] << 창 제목 가져오기 ;
만약에 ( 포함 ( 제목, "일치하는 쌍" ),
obj = 윈도우[w][ 아웃라인박스 ( 1 )] << 스크립터블 객체 가져오기 ;
s = 객체 << 스크립트 받기 ;
부서지다 ();
);
);
// Y() 명명된 인수 분리
에스 = 인수 ( 이름 만료 (들), 1 );
n 응답 = N Arg ( 이름 만료 ( ) );
// Y 역할의 데이터 열 가져오기
열 참조 = 목록 ();
을 위한 (c = 1 , c <= n 응답, C++,
에 집어 넣다 ( 열 참조, 인수 ( 이름 만료 ( s ), c ) );
);
// 결과를 검사하거나 수식에 대한 스크립트의 나머지 부분에서 열 참조를 사용합니다.
보여주다 ( 열 참조 );
이 부분이 작동하지 않습니다. 다음 오류가 발생합니다.
'window[w][Outline Box(1)]',window[w][/*###*/Outlinebox(1)]의 액세스 또는 평가에서 디스플레이 상자를 첨자할 수 없습니다.
선택한 열을 사용하여 계산을 수행하기 전에 이 부분이 제대로 작동하는지 확인하려고 했습니다.
Re: 일치하는 쌍 스크립트에 대한 사용자 입력Names Default to Here( 1 );
// simulate actions by user before running the script
dt = Open( "$SAMPLE_DATA/Fitness.jmp" );
dt << Matched Pairs(
Y( :Runtime, :RunPulse, :RstPulse, :MaxPulse ),
Separate Pairs( 0 ),
Reference Frame( 0 )
);
// your script begins here
// find Matched Pairs platform and get expression for it
window = Get Window List();
For( w = 1, w <= N Items( window ), w++,
title = window[w] << Get Window Title;
If( Contains( title, "Matched Pair" ),
obj = window[w][OutlineBox(1)] << Get Scriptable Object;
s = obj << Get Script;
Break();
);
);
// isolate Y() named argument
s = Arg( Name Expr( s ), 1 );
n response = N Arg( Name Expr( s ) );
// get data columns in Y role
col ref = List();
For( c = 1, c <= n response, c++,
Insert Into( col ref, Arg( Name Expr( s ), c ) );
);
// examine results, or use the column references in the rest of the script for a formula
Show( col ref );
Re: 일치하는 쌍 스크립트에 대한 사용자 입력내가 이 권리를 이해하고 있다면 두 개의 Y를 넣으면 작동할 것입니다. 2개 이상의 Y를 넣으면 어떻게 됩니까? 목록이나 행렬로 넣을 수 있습니까? 그런 다음 목록을 순환합니까?
Re: 일치하는 쌍 스크립트에 대한 사용자 입력내 해석이 맞다면 Matched Pairs 개체에 대한 참조가 없을 것이라는 솔루션을 게시한 후 깨달았습니다. 당신은 그것을 찾아야 할 것입니다. 다음은 스크립트의 업데이트된 버전입니다.
Names Default to Here( 1 );
// simulate actions by user before running the script
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Matched Pairs( Y( :height, :weight ), Reference Frame( 1 ) );
// your script begins here
// find Matched Pairs platform and get expression for it
window = Get Window List();
For( w = 1, w <= N Items( window ), w++,
title = window[w] << Get Window Title;
If( Contains( title, "Matched Pair" ),
obj = window[w][OutlineBox(1)] << Get Scriptable Object;
s = obj << Get Script;
Break();
);
);
// get data columns in Y role
y1 = Arg( Arg( Name Expr( s ), 1 ), 1 );
y2 = Arg( Arg( Name Expr( s ), 1 ), 1 );
// examine results, or use the column references in the rest of the script for a formula
Show( y1, y2 );
Re: 일치하는 쌍 스크립트에 대한 사용자 입력귀하의 요청은 사용자가 이미 Matched Pairs를 시작했고 이에 대해 스크립트를 실행하고 싶다는 의미로 해석됩니다. 즉, 스크립트는 사용자에게 열을 요청하거나 플랫폼 자체를 시작하지 않습니다.
Matched Pairs의 Y 역할에 사용된 데이터 열을 반환하는 메시지를 찾을 수 없습니다. 저는 출시된 플랫폼에 대한 스크립트를 가져온 다음 이를 구문 분석하여 데이터 열을 가져오는 접근 방식을 취했습니다.
Names Default to Here( 1 );
// simulate actions by user before running the script
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
mp = dt << Matched Pairs( Y( :height, :weight ), Reference Frame( 1 ) );
// script begins here
s = mp << Get Script;
y1 = Arg( Arg( Name Expr( s ), 1 ), 1 );
y2 = Arg( Arg( Name Expr( s ), 1 ), 1 );
// examine results, or use the column references in the rest of the script for a formula
Show( y1, y2 );