필터링된 테이블 상자에서 행을 선택할 때 오류를 방지하려면 어떻게 해야 합니까?저는 JMP 17.1을 실행 중이고 아래에 표시된 스크립트가 작동합니다. @jthi 돕다.스크립트를 실행하면 창에 Big Class.jmp 테이블 상자가 표시되고 행을 선택할 수 있으며 선택한 행에서 Height 및 Weight 값이 반환됩니다.실제 응용 프로그램에는 창을 마우스 오른쪽 버튼으로 클릭하고 "Filter Where..."를 선택하여 필터링하려는 훨씬 더 큰 테이블이 있습니다.테이블 상자에서 필터링된 테이블을 가져올 때 선택한 행이 데이터를 반환하는 경우도 있고 "'hvals[/*###*/sel], hvals[의 액세스 또는 평가에 아래 첨자 문제가 있습니다."라는 오류가 반환되는 경우도 있습니다. /*###*/sel]".아래 예에서는 Big Class Table Box를 마우스 오른쪽 버튼으로 클릭하고 성별 == F로 필터링합니다.
하위 집합 테이블 상자의 모든 행에 대한 데이터를 검색하는 방법에 대한 아이디어가 있습니까?
names default to here(1);
//run this now
dt = open("$sample_data\big class.jmp", invisible);
rpt = dt << select where(row() <= 10) << get as report;
tb = rpt[Table Box(1)];
tb << Set Selectable Rows();
tb << set row change function( Function( {this}, sel = this << get selected rows ) );
sel = tb << get row change function;
nw = new window("test",
v list box(
outline box("Big Class", rpt),
text box("Click 'OK' to choose height and weight"),
Button box("OK",
hvals = tb[NumberColBox("height")] << get;
wvals = tb[NumberColBox("weight")] << get;
ht = hvals[sel][1];
wt = wvals[sel][1];
print(sel, ht,wt);
)
)
);아래는 원본 테이블(Big Class의 처음 10개 행), 성별로 필터링하고 오류가 처음 발생한 행을 선택한 후의 Big 클래스 테이블 및 오류 메시지의 이미지입니다.스크립트는 필터링된 테이블의 처음 5개 행에서 작동하지만 6행이나 7행에서는 작동하지 않습니다.
자동화 및 스크립팅Re: 필터링된 테이블 상자에서 행을 선택할 때 오류를 방지하려면 어떻게 해야 합니까?필터링된 행 이후에 해당 행을 가져올 수 없는 버그인 것 같습니다.
Names Default To Here(1);
//run this now
dt = Open("$sample_data\big class.jmp", invisible);
rpt = dt << select where(Row() <= 10) << get as report;
Close(dt, no save);
tb = rpt[Table Box(1)];
tb << Set Selectable Rows(1);
nw = New Window("test",
V List Box(
Outline Box("Big Class", rpt),
Text Box("Click 'OK' to choose height and weight"),
Button Box("OK",
hvals = tb[Number Col Box("height")] << get;
wvals = tb[Number Col Box("weight")] << get;
sel = tb << get selected rows;
ht = hvals[sel][1];
wt = wvals[sel][1];
Print(sel, ht, wt);
)
)
);
wait(1);
tb << Filter Where(:sex == "F");
tb << Set Selected Rows([2]);
sel = tb << get selected rows;
show(sel);
wait(1);
tb << Set Selected Rows([6]);
sel = tb << get selected rows;
show(sel);
wait(1);
tb << Reset Filter;
sel = tb << get selected rows;
show(sel);
Re: 필터링된 테이블 상자에서 행을 선택할 때 오류를 방지하려면 어떻게 해야 합니까?이와 관련하여 JMP 지원팀에 문의하시기 바랍니다. 원하시면 지원해 드릴 수도 있습니다. 아마도 몇 가지 다른 해결 방법이 있을 것 같지만 여기에는 작동하는 것으로 보이는 해결 방법이 있습니다(복제 상자() 사용).
Names Default To Here(1);
//run this now
dt = Open("$sample_data\big class.jmp", invisible);
rpt = dt << select where(Row() <= 10) << get as report;
Close(dt, no save);
tb = rpt[Table Box(1)];
tb << Set Selectable Rows(1);
nw = New Window("test",
V List Box(
Outline Box("Big Class", rpt),
Text Box("Click 'OK' to choose height and weight"),
Button Box("OK",
hvals = tb[Number Col Box("height")] << get;
wvals = tb[Number Col Box("weight")] << get;
sel = (tb << clone box()) << get selected rows;
ht = hvals[sel][1];
wt = wvals[sel][1];
Print(sel, ht, wt);
)
)
);
wait(1);
tb << Filter Where(:sex == "F");
복제된 상자가 어딘가에 저장되는지 확실하지 않으므로 변수에 저장하고 선택한 행을 가져온 다음 해당 변수를 누락으로 설정하는 것이 더 나을 수 있습니다.
Re: 필터링된 테이블 상자에서 행을 선택할 때 오류를 방지하려면 어떻게 해야 합니까?이 문제를 JMP 지원팀에 보고하겠습니다.@jthi , 도와주셔서 정말 감사드립니다.
Re: 필터링된 테이블 상자에서 행을 선택할 때 오류를 방지하려면 어떻게 해야 합니까?지원팀으로부터 답변을 받은 후 해결 방법이 있으면 여기에 추가하세요. 또한 티켓 ID도 게시하는 것이 좋습니다(누군가 비슷한 질문이 있고 이 주제에 연결되어 있는 경우 JMP 직원은 해당 티켓 ID를 조회하여 상태를 확인할 수 있습니다).
Re: 필터링된 테이블 상자에서 행을 선택할 때 오류를 방지하려면 어떻게 해야 합니까?JMP 지원 티켓은 다음과 같습니다. TS-00063284