Find 및 Regex가 활성화된 상태에서 현재 선택된 열에서 데이터 필터를 여는 스크립트전체 공개: 저는 코더가 아니며 JSL은 저에게 특히 어려운 시간을 주지만 제가 작성하고 있는 스크립트의 이 부분이 이전보다 훨씬 쉬워야 한다고 생각합니다. "찾기" 및 "정규식"을 활성화한 상태에서 데이터 필터를 자주 사용하지만(이미지 참조) 이러한 설정을 저장할 수 있는 옵션이 없으므로 필터를 열 때마다 번거롭게 다시 활성화해야 합니다. 내가 원하는 것은 다음과 같은 임베디드 테이블 스크립트입니다.
1) 데이터 필터 열기
2) 현재 선택한 열을 자동으로 추가합니다(즉, 열을 선택한 다음 스크립트를 시작함).
3) "찾기" 활성화
4) "정규식" 활성화

안타깝게도 스크립트 저장 옵션은 다음 항목만 저장합니다.
Current Data Table() << Data Filter(
Location( {630, 160} ),
Conditional,
Add Filter( columns( :name ), Display( :name, Size( 160, 225 ), List Display ) )
);찾기 및 Regex는 스크립트와 함께 저장되지 않습니다. . .
그러나 여기에 내가 도움을 요청하도록 강요한 부분이 있습니다. 현재 선택된 열의 이름을 "columns()" 및 "Display()" 함수에 전달하는 방법을 평생 알 수 없습니다.
예를 들어 다음과 같이 많은 것을 시도했습니다.
Names Default to Here( 1 );
dt = Current Data Table( );
col_selected = dt << Get Selected Columns(string);
dt << Data Filter(
Location( {630, 160} ),
Conditional,
Add Filter( columns( col_selected ), Display( col_selected, Size( 160, 225 ), List Display ) )
);하지만 오류가 발생합니다.
"데이터 테이블에서 지정된 열을 찾을 수 없습니다. '열' 액세스 또는 평가에서 열( col_selected ) /*###*/"
아마도 col_selected가 목록이기 때문에 하나의 항목 목록에서 이름만 가져오는 방법을 알 수 없습니다. 정말 이렇게 힘들면 안됩니다.
Re: 찾기 및 Regex가 활성화된 상태에서 현재 선택된 열에서 데이터 필터를 여는 스크립트입니다.감사해요 @Mark_Bailey 여러 항목이 선택된 경우 첫 번째 열만 필터링하더라도 작동합니다. 그러나 귀하의 제안을 사용하여 열 참조를 얻으면 내가 원하는 것을 정확히 수행하는 FOR 루프를 만들 수 있었습니다.
Names Default to Here( 1 );
dt = Current Data Table( );
list = dt << Get Selected Columns( );
obj = dt << Data Filter( );
For( i = 1, i <= N Items( list ), i++,
obj << Add Filter( columns( Column( list[i] ) )
)
);
Re: 찾기 및 Regex가 활성화된 상태에서 현재 선택된 열에서 데이터 필터를 여는 스크립트입니다.그 방법이 복잡합니다. 그러나 작동하는 유일한 방법은 아닙니다. 식은 강력한 생성자이지만 항상 필요한 것은 아닙니다. Columns() 인수에는 열 참조가 필요합니다. 그게 전부입니다. 리터럴 값(열 이름), 변수에 저장된 값 또는 함수에서 반환된 값일 수 있습니다.
Names Default to Here( 1 );
// open example data table
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// select a column (mimic result by interactive user)
dt << Go To( :age );
// identify selection
col = dt << Get Selected Columns( String );
// obtain column reference
col = Column( col[1] );
// launch data filter on selected column
df = dt << Data Filter(
Add Filter( Columns( col ) )
);
Re: 찾기 및 Regex가 활성화된 상태에서 현재 선택된 열에서 데이터 필터를 여는 스크립트입니다.@ionatx 난 너랑 같이있어.나는 이것으로 어려움을 겪었고 결국 여기 포럼에서 해결책을 찾았습니다.내 대략적인 이해는 당신이 이 모든 rigmarole을 거쳐야 한다는 것입니다. 표현식을 다른 표현식에 삽입합니다. 원래 코드에서 col_selected는 결코 존재하지 않았습니다. 평가.Data Filter()는 열 제목으로 인식하지 못하는 "col_selected" 문자만 보았으므로 " 데이터 테이블에서 지정된 열을 찾을 수 없습니다. ".따라서 평가해야 하는 표현식임을 나타내는 Expr() 안에 포함합니다.그런 다음 전체 항목을 Eval Expr() 내부에 포함하여 Expr() 내부에 포함된 항목을 강제로 평가합니다.그런 다음 전체 주위에 Eval()을 감쌉니다. 표현 본질적으로 실행 원하는 출력을 생성하는 표현식입니다.모든 것이 매우 복잡하게 느껴지지만 그것이 작동하는 방식입니다.
더 알고 싶으세요?https://community.jmp.com/t5/JSL-Cookbook/Insert-one-expression-into-another-using-Eval-Insert-Eval-Expr/ta-p/48998
Re: 찾기 및 Regex가 활성화된 상태에서 현재 선택된 열에서 데이터 필터를 여는 스크립트입니다.@Chris_Rodrigues 그게 효과가 있었어, 이해가 안 돼 왜 그것은 효과가 있었지만 효과가 있었습니다.
@제프_퍼킨슨 후속 조치에 감사드리며, 그렇게 하겠습니다.
Re: 찾기 및 Regex가 활성화된 상태에서 현재 선택된 열에서 데이터 필터를 여는 스크립트입니다.@Chris_Rodrigues Data Filter() 메시지 내에서 평가할 변수를 가져오는 방법에 대한 핸들이 있으며 Find 및 Regex 옵션을 켜기 위한 JSL 지원이 없음을 확인할 수 있습니다.
귀중하다고 생각되면 입력하십시오. JMP 위시리스트 .
Re: 찾기 및 Regex가 활성화된 상태에서 현재 선택된 열에서 데이터 필터를 여는 스크립트입니다.col_selected와 같은 변수를 데이터 필터 함수에 전달하려면 Eval(Eval Expr(Expr())) 구문을 사용해야 합니다.JSL은 너무 이상합니다.그러나 다음과 같습니다.
Names Default to Here( 1 );
dt = Current Data Table( );
col_selected = dt << Get Selected Columns(string);
Eval(
Eval Expr(
dt << Data Filter(
Location( {630, 160} ),
Conditional,
Add Filter( columns( Expr(col_selected) ), Display( Expr(col_selected), Size( 160, 225 ), List Display ) )
);
)
);찾기 및 Regex 옵션의 경우... 그게 가능할지 의심스럽습니다.스크립팅 가이드의 Data Filter() 문서를 보면 해당 옵션에 대한 언급이 없습니다.스크립팅 인터페이스가 그 수준의 세분성을 가지고 있는지 의심스럽고 해당 체크박스는 대화식으로만 표시될 수 있습니다.그래도 내가 틀렸을 수도 있습니다.다른 사람이 이에 대한 해결책을 제시할 수 있습니다.