.jsl의 열 전환기에 모든 열을 자동으로 추가하는 방법저는 JSL의 초보자입니다. 아직 배우는 중입니다.
Graph Builder로 검토해야 하는 파일이 많고 파일마다 열 수가 다릅니다. 유일한 상수는 열 1을 오버레이로, 열 2를 X축에, 열 3을 Y축에, 열 3을 열 전환기에서 원하는 것을 알고 있다는 것입니다. 이러한 설정으로 현재 열려 있는 모든 데이터 테이블에 대한 모든 그래프 빌더 창을 여는 스크립트를 갖고 싶지만 어떻게 해야할지 모르겠습니다. 이것은 내가 얻은 가장 가까운 것입니다.
Graph Builder(
Size( 1900, 1200 ),
Variables(
X( :Column(2) ),
Y( :Column(3) ),
Overlay( :Column(1) )
),
Elements( Points( X, Y, Legend( 10 ) ), Line( X, Y, Legend( 11 ) ) ),
Column Switcher( :Column(3) ),
SendToReport(
Dispatch(
{},
"",
ScaleBox
)
)
);
도움이 필요한 두 가지: (1) 나에게 묻지 않고 데이터 테이블의 모든 열을 자동으로 로드하도록 열 전환기를 설정하는 방법을 알아내고, (2) 이 스크립트를 열려 있는 모든 열을 반복하는 루프로 래핑합니다. 데이터 테이블.
미리 감사드립니다!
대량 맞춤화Re: .jsl의 열 전환기에 모든 열을 자동으로 추가하려면 어떻게 해야 하나요?여기에 도움을 주신 분들 덕분에 여기에 내 것을 많이 추가하지 않은 것 같습니다. 이것은 기본적으로 내가 끝내는 것입니다.
목표는 한 번에 하나씩 텍스트 파일로 가득 찬 폴더를 통과하여 로드하고 일부 설정이 미리 설정된 그래프 빌더 창을 표시한 다음 그래프 빌더가 닫히면 자동으로 열리는 스크립트를 만드는 것이었습니다. 다음.
내가 사용한 접근 방식은 전역 변수를 사용하여 관리하는 것이었습니다. "regFlist"는 열어야 하는 파일 목록이고 "stopReg"는 켜져 있을 때 프로세스를 중단시키는 플래그입니다.
두 가지 스크립트가 있습니다. (1) reg_Next.jsl -- regFlist를 확인하고 비어 있으면 사용할 폴더를 요청합니다. 그렇지 않으면 regFlist 목록에서 다음 파일을 로드합니다(regStop이 설정되지 않은 경우). (2) reg_Stop.jsl -- 단순히 regFlist를 비우고 regStop 변수를 설정합니다. 프로세스를 조기에 중지하는 데 사용됩니다.
저는 .jsl을 처음 사용하는 초보자이므로 모든 피드백/건설적 비평에 매우 개방적입니다.
reg_Next.jsl
//!<BR /><BR />// use global variables (since hey, what could go wrong? ;)</img> )
Names Default To Here( 0 );
// get path to self
selfPath = get default directory() || "/reg_Next.jsl";
// check to see if user has requested a stop
If( stopReg == 1 ,
stopReg = 0;
regFlist = {};
Stop();
);
// initialize list of files to review if there aren't any in the list
If( Is Empty( regFlist ) | N Items( regFlist ) < 1,
jmpDir = Pick Directory( "Select the jmp directory." );
regFlist = Files In Directory( jmpDir );
);
// open data table and remove it from the regFlist
dt = Open( jmpDir || "/" || regFlist[1] );
regFlist = Remove( regFlist, 1 );
// set up for column switcher
colList = dt << get column names( string );
col1 = colList[1];
col2 = colList[2];
col3 = colList[3];
Remove From( colList, 1, 2 );
// open graph builder
gb = dt << Graph Builder(
size( 800, 600 ),
Variables( X( As Column( col2 ) ), Y( As Column( col3 ) ), Overlay( As Column( col1 ) ) ),
Elements( Points( X, Y, Legend( 10 ) ), Line( X, Y, Legend( 11 ) ) )
);
cs = gb << Column Switcher( col3, colList );
// set up mechanism to re-run myself when graph builder is closed
If( N Items( regFlist ) == 0,
gb << on close( Close( dt, nosave ) ),
gb << on close(
Close( dt, nosave );
Open( selfPath, Run JSL( 1 ) );
)
);reg_Stop.jsl
//!
Names Default To Here( 0 );
regFlist = {};
stopReg = 1;Re: .jsl의 열 전환기에 모든 열을 자동으로 추가하려면 어떻게 해야 하나요?@BHarris 전체 토론 커뮤니티에서 사용할 수 있도록 이 토론에 솔루션을 추가할 수 있다면 좋을 것입니다.
Re: .jsl의 열 전환기에 모든 열을 자동으로 추가하려면 어떻게 해야 하나요?나는 그것을 알아. 가끔 JMP에 터미널이 있었으면 정말 좋았을 텐데...
다른 사람이 여기에서 이와 동일한 솔루션을 찾고 있는 경우 회신해 주시면 결과를 공유하겠습니다.
Re: .jsl의 열 전환기에 모든 열을 자동으로 추가하려면 어떻게 해야 하나요?@txnelson -- 이 작업을 수행하기 위해 Scripting Index 및 Scripting Guide와 함께 약 3시간을 보냈지만 "on close()" 함수로 다음 파일을 여는 방법을 알 수 없었습니다. 여기 제가 *작동해야* 한다고 생각했지만 작동하지 않는 것이 있습니다.
(참고로 목표는 이러한 파일을 한 번에 하나씩 살펴보고 Graph Builder 창을 불러와 파일을 평가하게 한 다음 Graph Builder 창을 닫을 때 데이터 테이블을 닫고 다음 파일을 여는 것입니다. 그리고 음모를 꾸미십시오.)
이 스크립트는 "jmp_reg_4.jsl"이라고 하며 내 데스크탑에 있습니다.
Names Default To Here( 0 ); // <-- trying to use globals so the file list will be maintained between invocations
/*
All of what you suggest is doable in JMP.
You can use "Files in Directory()" to get the file list, and then loop through them.
You can attach an "On Close()" function to the Graph Builder object, which will close the current data table, and then go get the next file from your list of files from the "Files in Directory()" list.
Examples and description are in the Scripting Index
Help==>Scripting Index
*/
If( Not( As Global( "flist" ) ),
jmpDir = Pick Directory( "Select the jmp directory." );
flist = Files In Directory( jmpDir );
);
dt = Open( jmpDir || "/" || flist[1] );
Remove( flist, 1 );
colList = dt << get column names( string );
col1 = colList[1];
col2 = colList[2];
col3 = colList[3];
Remove From( colList, 1, 2 );
gb = dt << Graph Builder(
size( 800, 600 ),
Variables( X( As Column( col2 ) ), Y( As Column( col3 ) ), Overlay( As Column( col1 ) ) ),
Elements( Points( X, Y, Legend( 10 ) ), Line( X, Y, Legend( 11 ) ) )
);
cs = gb << Column Switcher( col3, colList );
gb << on close(
Close( dt, nosave );
run script( "/Users/bh/Desktop/jmp_reg_4.jsl" );
);검사할 파일의 전체 목록을 만들고 호출할 때마다 "flist"(파일 목록) 변수에 여전히 요소가 있으면 다음 항목을 가져와서 로드하고 플로팅하면 됩니다. 하지만 예상대로 작동하지 않습니다. 그래프 작성기 창을 닫으면 데이터 테이블이 올바르게 닫히지만 다른 작업은 수행되지 않습니다.
Re: .jsl의 열 전환기에 모든 열을 자동으로 추가하려면 어떻게 해야 하나요?나도 방법을 찾을 수 없지만 탭 키를 몇 번 누르면 포커스가 열 전환기의 열 목록으로 이동합니다.

Re: .jsl의 열 전환기에 모든 열을 자동으로 추가하려면 어떻게 해야 하나요?두 번째 요청을 수행하는 방법을 모르겠습니다.Re: .jsl의 열 전환기에 모든 열을 자동으로 추가하려면 어떻게 해야 하나요?감사해요!
내 목록에서 2위는 어때? (3번은 알아낼 수 있을 것 같은데...)Re: .jsl의 열 전환기에 모든 열을 자동으로 추가하려면 어떻게 해야 하나요?당신이 제안하는 모든 것은 JMP에서 가능합니다.
"Files in Directory()"를 사용하여 파일 목록을 가져온 다음 반복할 수 있습니다.
Graph Builder 개체에 "On Close()" 함수를 연결하여 현재 데이터 테이블을 닫은 다음 "Files in Directory()" 목록의 파일 목록에서 다음 파일을 가져올 수 있습니다.
예제와 설명은 스크립팅 인덱스에 있습니다.
도움말==>스크립팅 인덱스
Re: .jsl의 열 전환기에 모든 열을 자동으로 추가하려면 어떻게 해야 하나요?인상적인! "Column Switcher( :Column(3), :Column(all) )"와 그 변형을 계속 사용하려고 했습니다.
이러한 스크립트 개선이 가능할까요? (1) 대신 txt 파일로 가득 찬 폴더를 제공하고 Graph Builder에서 한 번에 하나씩 열도록 하고 Graph Builder를 닫으면 해당 Data Table 파일을 닫고 다음 파일을 엽니다. (2) 자동으로 열 전환기 상자를 클릭할 필요 없이 즉시 변수를 통해 화살표를 시작할 수 있도록 열 전환기로 포커스를 이동합니다. (3) 열릴 때 화면에서 그래프 빌더 창을 전체 크기로 표시합니다.
JMP는 제가 가장 좋아하는 소프트웨어가 되어가고 있습니다.Re: .jsl의 열 전환기에 모든 열을 자동으로 추가하려면 어떻게 해야 하나요?스크립팅은 매우 간단합니다.
Names Default To Here( 1 );
// Loop across all data tables
For( i = 1, i <= N Table(), i++,
dt = Data Table( i );
// Find all of the column names
colList = dt << get column names( string );
// Get the first 3 columns for special processing
col1 = colList[1];
col2 = colList[2];
col3 = colList[3];
// Remove first 2 from column switcher columns from the overall list
Remove From( colList, 1, 2 );
// Run the Graph Builder
dt << Graph Builder(
Size( 570, 621 ),
Variables(
X( As Column( col2 ) ),
Y( As Column( col3 ) ),
Overlay( As Column( col1 ) )
),
Elements( Points( X, Y, Legend( 10 ) ), Line( X, Y, Legend( 11 ) ) ),
Column Switcher( col3, colList )
);
);