モデルテーブルスクリプトから情報を解析する<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは、私はモデルスクリプトからモデルの項を削除するための堅牢な方法を作ろうとしています。つまり、これはサンプルスクリプトです(カスタムDOEを使用して自動的に作成されます)。
モデルに合わせる(
Y(:厚さが削除された)、
効果(
:名前( "ガス種{1&1-3}")、
:名前( "ガス種{1-3}")、
:温度、
プラズマパワー
プラズマ時間、
エッチングガスの流れ
:原子炉圧力、
:名前( "ガスの種類{1&2-3}")*:気温、
:名前( "ガスタイプ{1&2-3}")*:プラズマパワー
:名前( "Gas Type {1&2-3}")*:プラズマ時間
:Name( "Gas Type {1&2-3}")*:エッチングガスの流れ
:Name( "Gas Type {1&2-3}")*:原子炉圧力
:温度*:原子炉圧力、
:プラズマパワー*:プラズマ時間
:プラズマパワー*:エッチングガス流量
:温度*:温度
)
パーソナリティ( "標準最小二乗")、
強調(「効果レバレッジ」)
)
私はeffects()セクション内に存在する要因のリストを取得することに興味があります。そして、文字列の同じ部分にあるモデル用語のリスト。問題は、文字列の全長が変わること、括弧の数が変わること、そしてY()、Effects()、Personality()、Emphasis()の順序が変わることです。
考えたことだが、やり方がわからない。
- 単語を使用して "、"で文字列を分割しますが、それは最高レベルでのみです。それでは、効果で始まる単語を見つけて、それを "、"でもう一度分割します。"*"が付いていないものが要因で、全体がモデルの項のリストです。
- "Effects"を見つけてカウントを開始し、every "(" is +1 every ")"は-1になり、0に到達したときにEffectsに属する最後の閉じ括弧がその部分を削除するようになりました。
しかし、それがスクリプト言語がすることなので、スクリプトを解析するより簡単な方法があるはずです。
モデルテーブルスクリプトから情報を解析するこれが道だ、私は得るために、イアンの2番目の例によってnspired モデル引数の数と順序が未知の場合の効果
fm_expr = 経験値 (
フィットモデル (
Y ( : 厚さを削除 ) 、
効果 (
: 名 ( "ガスの種類{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 、私 )) 、
もし ( で始まる ( チャー ( 名前Expr ( arg_i )) 、 「効果」 ) 、
n = N Arg ( arg_i ) ;
効果 = 繰り返す (
k = 0 ;
{ k ++ ; Arg ( arg_i 、 k )} ;、
n
) ;
ブレーク () ;
、
私 ++
)
) ;
印刷する ( 効果 ) ;
モデルテーブルスクリプトから情報を解析するありがとうございます。
モデルテーブルスクリプトから情報を解析するあなたの質問に完全には答えていませんが、JMPスクリプトは実際には式であり、そのように操作することができます(スクリプティングインデックスまたはガイドの「Head()」、「Arg()」および「NArg {}」を参照)。例えば:
fm = 経験値 (
フィットモデル (
Y ( : シリカ ) 、
効果 (
: 摩耗 & RS 、
: モジュラス & RS 、
: ELONG & RS 、
: 硬度 & RS 、
: 摩耗 * : 摩耗 、
: 摩耗 * : モジュラス 、
: モジュラス * : モジュラス 、
: 摩耗 * : ELONG 、
: モジュラス * : ELONG 、
: ELONG * : ELONG 、
: 摩耗 * : 硬度 、
: モジュラス * : 硬度 、
: ELONG * : 硬度 、
: 硬度 * : 硬度
) 、
人 ( 「標準最小二乗法」 ) 、
強調 ( 「効果スクリーニング」 ) 、
実行する
)
) ;
効果 = Arg ( fm 、 2 ) ;
にとって ( 私 = 1 、私 <= NArg ( 効果 ) 、私 ++、印刷する ( Arg ( 効果 、私 ))) ;
一方で、それらはテキスト文字列として扱うこともできます。その場合、最も一般的で強力なアプローチのために 'RegEx()'について学んでください。
書式付きコードの貼り付けは、OSとブラウザに依存します。MacでSafariを使用します。
モデルテーブルスクリプトから情報を解析するこんにちはイアン、あなたの答えをありがとう、それは私の問題を解決します:
NamesDefaultToHere(1);
dt =現在のデータテーブル()。
fm = dt << run script( "Model");
試してみてください(fm = fm << run); //これらのスクリプトは通常runコマンドを含みません。
effectNames = fm << getEffectNames;
レポート(fm)<< closeWindow;
mainEffectNames = {};
(i = 1、i <= NItems(effectNames)、i ++、if(NItems(Words(effectNames)の場合 、"*"))== 1、InsertInto(mainEffectNames、effectNames) )))
印刷(effectNames、mainEffectNames);
しかし私の学習のために:あなたが特定の左括弧に属する右括弧を探すことができ、それらの括弧の間に文字列の一部を得ることができる文字列から情報を解析する方法はありますか?
そしてこのフォーラムのスクリプトをどのようにフォーマットしてスクリプトのように見せますか。
モデルテーブルスクリプトから情報を解析するスクリプトを実行しても構わない場合は、次のようにします。
NamesDefaultToHere ( 1 ) ;
dt = 開いた ( "$ SAMPLE_DATA / Tiretread.jmp" ) ;
fm = dt << フィットモデル (
Y ( : シリカ ) 、
効果 (
: 摩耗 & RS 、
: モジュラス & RS 、
: ELONG & RS 、
: 硬度 & RS 、
: 摩耗 * : 摩耗 、
: 摩耗 * : モジュラス 、
: モジュラス * : モジュラス 、
: 摩耗 * : ELONG 、
: モジュラス * : ELONG 、
: ELONG * : ELONG 、
: 摩耗 * : 硬度 、
: モジュラス * : 硬度 、
: ELONG * : 硬度 、
: 硬度 * : 硬度
) 、
人 ( 「標準最小二乗法」 ) 、
強調 ( 「効果スクリーニング」 ) 、
実行する
) ;
effectNames = fm << getEffectNames ;
報告書 ( fm ) << ウィンドウを閉じる ;
mainEffectNames = {} ;
にとって ( 私 = 1 、私 <= NItems ( effectNames ) 、私 ++、もし ( NItems ( ことば ( effectNames [ 私 ] 、 "*" )) == 1 、 InsertInto ( mainEffectNames 、 effectNames [ 私 ]) )) ;
印刷する ( effectNames 、 mainEffectNames ) ;
'getEffectNames'メッセージはより単純な式を提供しますが、それでも解析して主な効果のみを取得する必要があります。'FitModel'レポートから主な効果を得るための他の間接的な方法があります。
しかし、あなたは「カスタムDOEから自動的に作成される」と言った、その場合はそこから要因のリストを取得する方が簡単かもしれません。