모델 테이블 스크립트의 정보를 구문 분석합니다.<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕하세요, 모델 스크립트에서 모델 용어를 제거하는 강력한 방법을 만들려고합니다. 따라서이 스크립트는 예제 DOE로 자동 생성됩니다.
모델에 맞춤 (
Y (: 제거 된 두께),
효과 (
: 이름 ( "가스 유형 {1 & 1-3}"),
: 이름 ( "가스 유형 {1-3}"),
:온도,
: 플라즈마 파워,
: 플라즈마 시간,
: 엣지 가스 흐름,
: 원자로 압력,
: 이름 ( "가스 유형 {1 & 2-3}") * : 온도,
: 이름 ( "가스 유형 {1 & 2-3}") * : 플라즈마 전원,
: 이름 ( "가스 유형 {1 & 2-3}") * : 플라즈마 시간,
: 이름 ( "Gas Type {1 & 2-3}") * : Etch Gas Flow,
: 이름 ( "가스 유형 {1 & 2-3}") * : 원자로 압력,
: 온도 * : 원자로 압력,
: 플라즈마 전력 * : 플라즈마 시간,
: 플라즈마 파워 * : 에칭 가스 유량,
: 온도 * : 온도
),
개성 ( "Standard Least Squares"),
강조 ( "효과 레버리지")
)
effects () 섹션에있는 요소 목록을 얻는 데 관심이 있습니다. 그리고 문자열의 같은 부분에있는 모델 용어 목록. 문제는 문자열의 전체 길이가 다를 수 있으므로 괄호의 수는 달라질 수 있으며 Y (), Effects (), Personality (), Emphasis ()의 순서가 다를 수 있습니다.
생각했지만 해결 방법을 모릅니다.
- 단어를 사용하여 ","에서 문자열을 분리하지만 최고 수준에서만 분리하십시오. 이제 효과로 시작하는 단어를 찾아서 다시 ","로 나눕니다. "*"가없는 것은 요인이며, 전체는 모델 용어의 목록입니다.
- "효과"를 찾아 카운트를 시작하면 "("은 +1이 매 ")"은 -1이고 0에 도달하면 효과에 속하는 마지막 닫기 괄호가 이제 substr을 사용하여 해당 부분을 제거합니다.
그러나 스크립트 언어가하는 것이기 때문에 스크립트를 파싱하는 더 쉬운 방법이 있어야합니다.
다시 : 모델 테이블 스크립트에서 정보를 구문 분석 방법이 있어요. 이안의 두 번째 예를 통해 nspired 모델 인수의 수와 순서가 알려지지 않은 경우의 효과.
fm_expr = Expr (
모델에 맞추기 (
와이 ( : 제거 된 두께 ) ,
효과 (
: 이름 ( "가스 유형 {1 & 1-3}" ) ,
: 이름 ( "가스 유형 {1-3}" ) ,
: 온도 ,
: 플라즈마 파워 ,
: 플라즈마 시간 ,
: 에칭 가스 흐름 ,
: 원자로 압력 ,
: 이름 ( "가스 유형 {1 & 2-3}" ) * : 온도 ,
: 이름 ( "가스 유형 {1 & 2-3}" ) * : 플라즈마 파워 ,
: 이름 ( "가스 유형 {1 & 2-3}" ) * : 플라즈마 시간 ,
: 이름 ( "가스 유형 {1 & 2-3}" ) * : 에칭 가스 흐름 ,
: 이름 ( "가스 유형 {1 & 2-3}" ) * : 원자로 압력 ,
: 온도 * : 원자로 압력 ,
: 플라즈마 파워 * : 플라즈마 시간 ,
: 플라즈마 파워 * : 에칭 가스 흐름 ,
: 온도 * : 온도
) ,
인격 ( "표준 최소 사각형" ) ,
힘 ( "효과 레버리지" )
)
) ;
// 효과 목록 만들기
나는 = 1 ;
동안 ( ! 비었다 ( arg_i = Arg ( fm_expr , 나는 )) ,
만약 ( 함께 시작 ( 숯 ( 이름 설명 ( arg_i )) , "효과" ) ,
엔 = N Arg ( arg_i ) ;
효과 = 반복 (
케이 = 0 ;
{ 케이 ++ ; Arg ( arg_i , 케이 }} ;,,
엔
) ;
단절 () ;
,
나는 ++
)
) ;
인쇄 ( 효과 ) ;
다시 : 모델 테이블 스크립트에서 정보를 구문 분석감사!
다시 : 모델 테이블 스크립트에서 정보를 구문 분석질문에 완전히 대답하지는 않지만 JMP 스크립트는 실제로 표현식이며 Scripting Index 또는 Guide에서 'Head ()', 'Arg ()'및 'NArg {}'를 찾아보십시오. 예 :
fm = Expr (
모델에 맞추기 (
와이 ( : 규토 ) ,
효과 (
: 연마 & RS ,
: 모듈러스 & RS ,
: 엘용 & RS ,
: 경도 & RS ,
: 연마 * : 연마 ,
: 연마 * : 모듈러스 ,
: 모듈러스 * : 모듈러스 ,
: 연마 * : 엘용 ,
: 모듈러스 * : 엘용 ,
: 엘용 * : 엘용 ,
: 연마 * : 경도 ,
: 모듈러스 * : 경도 ,
: 엘용 * : 경도 ,
: 경도 * : 경도
) ,
인격 ( "표준 최소 사각형" ) ,
힘 ( "효과 스크리닝" ) ,
운영
)
) ;
효과 = Arg ( fm , 2 ) ;
...에 대한 ( 나는 = 1 , 나는 <= NArg ( 효과 ) , 나는 ++, 인쇄 ( Arg ( 효과 , 나는 )))) ;
반면에 텍스트 문자열로 취급 할 수도 있습니다.이 경우 가장 일반적이고 강력한 접근 방식 인 'RegEx ()'에 대해 알아보십시오.
포맷으로 코드 붙여 넣기는 약간의 OS 및 브라우저에 의존합니다. Mac에서는 Safari를 사용합니다.
다시 : 모델 테이블 스크립트에서 정보를 구문 분석안녕 이안, 당신의 대답을 주셔서 감사합니다, 그것은 내 문제를 해결합니다 :
NamesDefaultToHere (1);
dt = 현재 데이터 테이블 ();
fm = dt << 스크립트 실행 ( "모델");
시도 (fm = fm << run); //이 스크립트는 일반적으로 run 명령을 포함하지 않기 때문에.
effectNames = fm << getEffectNames;
보고서 (fm) << closeWindow;
mainEffectNames = {};
for (i = 1, i <= NItems (effectNames), i ++, if (NItems (단어 (effectNames , "*")) == 1, InsertInto (mainEffectNames, effectNames ))));
인쇄 (effectNames, mainEffectNames);
그러나 내 학습을 위해 : 문자열에서 정보를 구문 분석하여 특정 여는 괄호에 속하는 닫는 괄호를 찾아 그 괄호 사이에있는 문자열을 얻을 수있는 방법이 있습니까?
그리고이 포럼의 스크립트를 스크립트처럼 형식화하는 방법은 무엇입니까?
다시 : 모델 테이블 스크립트에서 정보를 구문 분석스크립트 실행에 신경 쓰지 않는다면 다음과 같이 할 수 있습니다.
NamesDefaultToHere ( 1 ) ;
dt = 열다 ( "$ SAMPLE_DATA / Tiretread.jmp" ) ;
fm = dt << 모델에 맞추기 (
와이 ( : 규토 ) ,
효과 (
: 연마 & RS ,
: 모듈러스 & RS ,
: 엘용 & RS ,
: 경도 & RS ,
: 연마 * : 연마 ,
: 연마 * : 모듈러스 ,
: 모듈러스 * : 모듈러스 ,
: 연마 * : 엘용 ,
: 모듈러스 * : 엘용 ,
: 엘용 * : 엘용 ,
: 연마 * : 경도 ,
: 모듈러스 * : 경도 ,
: 엘용 * : 경도 ,
: 경도 * : 경도
) ,
인격 ( "표준 최소 사각형" ) ,
힘 ( "효과 스크리닝" ) ,
운영
) ;
effectNames = fm << getEffectNames ;
보고서 ( fm ) << closeWindow ;
mainEffectNames = {} ;
...에 대한 ( 나는 = 1 , 나는 <= NItems ( effectNames ) , 나는 ++, 만약 ( NItems ( 말 ( effectNames [ 나는 ] , "*" )) == 1 , 에 집어 넣다 ( mainEffectNames , effectNames [ 나는 ]) )) ;
인쇄 ( effectNames , mainEffectNames ) ;
'getEffectNames'메시지는보다 간단한 표현식을 제공하지만 여전히 주 효과 만 얻기 위해 구문 분석해야합니다. 'FitModel'보고서에서 주요 효과를 얻으려면 다른 간접적 인 방법이 있습니다.
하지만 당신은 '자동으로 정의 DOE에서 만들었습니다.'라고 말했을 때, 거기에서 요인 목록을 얻는 것이 더 간단 할 수도 있습니다.