변수를 사용하는 열 전환기 스크립팅 문제<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕하세요, GUI 표시 상자에서 얻은 열 변수에서 열 전환기를 스크립팅하는 데 문제가 있습니다.여기의 예는 그래프 빌더를 사용한 것이지만 비슷한 결과를 얻은 다른 플랫폼을 시도했습니다. 열 이름을 얻는 방법(obj << get items()) 때문인지는 모르겠지만 첨부된 jsl에 해당 항목을 모두 포함했습니다.그래프 빌더는 오류 없이 로드되어야 하고, "Y" 열은 Y 역할에 있어야 하며, "Y"와 추가된 두 개의 더미 열 "temp" 및 "temp2"는 열 전환기에 있어야 합니다. 그러나 Column Switcher()의 첫 번째 인수에서는 거기에 텍스트를 입력하는 것만 좋아하는 것 같습니다. 텍스트 "Y" 또는 ":Y"를 입력하면 제대로 작동하지만 "Y"가 포함된 열 변수를 작동하는 방식으로 처리하는 방법을 찾지 못했습니다. 변수를 사용하면 오류가 발생합니다.
다음은 코드 조각입니다. 샘플 데이터를 열고 자체 입력 GUI를 생성하는 간단한 스크립트를 첨부했으며(확인을 클릭하면 됩니다.) 열 이름을 입력하는 것만으로도 작동하는 방식을 확인할 수 있습니다. 변수를 사용한 시도는 그렇지 않습니다. 내가 뭔가 잘못하고 있는 걸까요, 아니면 버그인가요? 그렇다면 해결 방법이 있습니까? 저는 JMP 11.2.0을 사용하고 있습니다.
이 스니펫은 참조용으로만 표시됩니다. 실행하시려면 첨부파일 전체를 실행해 주세요. yParamNames는 플롯할 매개변수가 포함된 목록입니다."Y"는 이 목록의 첫 번째 열입니다.
그래프 빌더(
사이즈( 570, 559 ),
변수( X( 열(dtDataOrig,tempName[1]) ), Y( 열(dtDataOrig,yParamNames[1]) ), 오버레이( 열(dtDataOrig, partIdName[1]) ) ),
강요(
선( X, Y, 범례( 13 ), 행 순서( 0 ), 요약 통계( "평균" ) )
),
컬럼 전환기(
//"Y", // 열 이름의 텍스트를 입력하면 작동합니다.
// 작동하지 않습니다
//열(dtDataOrig, Y)로,
//열(:Y)로,
//열(Y)로,
//열(Y),
//열(:Y),
yParamNames[1], // <---- 이것이 작동하고 가장 간단한 구현이라고 생각하지만 변수를 허용하도록 할 수는 없습니다.
yParamName
)
);
감사해요,
마이크
Re: 변수를 사용하는 열 전환기 스크립팅 문제여기에 보고된 문제는 몇 년 전에 발생했지만 이제 Column Switcher가 인수를 평가하는 방식대로 평가하므로 고객이 더 이상 이 문제를 해결할 필요가 없다는 점을 확인하고 싶습니다. JMP 13 이상 버전에서는 제대로 작동합니다.
Re: 변수를 사용하는 열 전환기 스크립팅 문제David에게 감사합니다. 완벽하게 작동합니다.Eval(Parse(Eval Insert())) 기법을 써볼까 고민했지만, 그래프 빌더 객체를 먼저 생성한 후에는 사용할 생각이 없었을 것입니다.
귀하의 의견을 주신 PMroz에게도 감사드립니다... 이 스크립트는 실제로 당신의 아이디어였습니다.지난 Discover Summit에서 저는 Excel 스크립트를 대체하여 산점도 방식으로 온도 특성화 데이터를 표시하는 것에 대해 질문했고 귀하께서는 열 전환기가 있는 그래프 빌더를 제안하셨습니다. 훌륭하게 작동합니다. 감사해요!
-마이크
Re: 변수를 사용하는 열 전환기 스크립팅 문제그래프 빌더 기능에서 열 전환기를 꺼내고 메시지를 사용하여 생성해 보십시오.
gb = 그래프 빌더(
크기(...),
변수( ... ),
요소( ... )
);
평가 ( 구문 분석 ( 평가 삽입 ( "\[
gb << 열 전환기( ^yParamNames[1]^, ^yParamNames^ )
]\" ))) ;
마지막 부분의 구문은 자세히 설명하기는 쉽지 않지만 사용하기는 쉽습니다.이는 Peter가 설명한 것과 동일한 원리를 사용하지만 문자열을 작성하기 위해 이스케이프 시퀀스가 필요하지 않은 구문을 사용합니다.
이 마지막 코드 조각을 빌드하는 데 사용하는 순서를 이해하는 것이 도움이 됩니다.다음 패턴으로 시작합니다.
평가 ( 구문 분석 ( 평가 삽입 ( "\[
]\" ))) ;
다음 패턴 안에 JSL 코드를 작성(또는 복사)합니다.
gb << 열 전환기( yParamNames[1], yParamNames )
동적으로 평가해야 하는 변수가 있음을 나타내려면 '캐럿' 기호로 인용하세요. ^variable^
Re: 변수를 사용하는 열 전환기 스크립팅 문제이것이 당신이 염두에 두었던 것입니까? 나는 이것을 시도했지만 여전히 같은 방식으로 작동합니다.
str = "그래프 빌더(
사이즈( 570, 559 ),
변수( X( 열(dtDataOrig,tempName[1]) ), Y( 열(dtDataOrig,yParamNames[1]) ), 오버레이( 열(dtDataOrig, partIdName[1]) ) ),
강요(
선( X, Y, 범례( 13 ), 행 순서( 0 ), 요약 통계( \!"평균\!" ) )
),
컬럼 전환기(
//yParamNames[1],
:와이,
yParamName
)
);" ;
평가 ( 분석하다 ( str )) ;
Re: 변수를 사용하는 열 전환기 스크립팅 문제때때로 변수는 JSL에서 직접 작동하지 않습니다.작동할 것으로 알고 있는 문자열로 그래프 빌더 코드를 동적으로 작성하고 eval(parse())를 사용하여 실행하십시오.
dt = 열려 있는 ( "$sample_data\big class.jmp" ) ;
str = "그래프 빌더(
제어판 표시( 0 ),
변수( X( :weight ), Y( :height ) ),
강요(
점( X, Y, 범례( 1 ), 지터( 1 ) ),
적합선(
엑스,
와이,
범례( 4 ),
적합도( 1 ),
예측 신뢰도( 0 ),
학위( \!"선형\!" ),
방정식( 0 ),
제곱 평균 오차( 0 ),
R²( 0 )
)
)
)" ;
평가 ( 분석하다 ( str )) ;