Analyser les informations du script de table de modèle<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Bonjour, j'essaie de créer un moyen robuste de supprimer les termes du modèle du script du modèle. Voici donc un exemple de script (créé automatiquement avec le DOE personnalisé):
Modèle ajusté (
Y (: épaisseur enlevée),
Effets(
: Nom ("Type de gaz {1 & 1-3}"),
: Nom ("Type de gaz {1-3}"),
:Température,
: Puissance du plasma,
: Heure du plasma,
: Flux gazeux de gravure,
: Pression du réacteur,
: Nom ("Type de gaz {1 & 2-3}") *: Température,
: Nom ("Type de gaz {1 & 2-3}") *: Puissance du plasma,
: Nom ("Type de gaz {1 & 2-3}") *: Heure du plasma,
: Nom ("Type de gaz {1 & 2-3}") *: Débit de gaz gravé,
: Nom ("Type de gaz {1 & 2-3}") *: Pression du réacteur,
: Température *: pression du réacteur,
: Puissance du plasma *: Heure du plasma,
: Plasma Power *: Débit de gaz de gravure,
: Température *: température
),
Personnalité ("moindres carrés standard"),
Emphase ("effet de levier")
)
Je souhaite obtenir une liste des facteurs présents dans la section effects (). Et la liste des termes du modèle dans la même partie de la chaîne. Le problème est que la longueur totale de la chaîne peut varier, le nombre de parenthèses peut varier et l'ordre de Y (), Effets (), Personnalité (), Emphasis () peut être déplacé.
Ce à quoi il a pensé mais ne sait pas comment faire:
- utilisez des mots pour scinder la chaîne en "," mais uniquement au plus haut niveau. Recherchez maintenant le mot qui commence par les effets, puis divisez-le à nouveau en ",". Ceux sans "*" sont les facteurs, le tout est la liste des termes du modèle.
- Trouvez "Effects" puis commencez à compter, chaque "(" vaut +1 tous ")" vaut -1 et lorsque vous arrivez à 0, la dernière parenthèse fermante appartenant à Effects utilise désormais substr pour effacer cette partie.
Mais il me semble qu’il devrait exister un moyen plus simple d’analyser le script puisque c’est ce que fait le langage de script.
Re: Analyser les informations du script de table de modèle Voici un moyen, je nspired par le deuxième exemple de Ian, pour obtenir Effets lorsque le nombre et l'ordre des arguments du modèle sont inconnus.
fm_expr = Expr (
Modèle ajusté (
Y ( : Épaisseur enlevée ) ,
Effets (
: prénom ( "Type de gaz {1 & 1-3}" ) ,
: prénom ( "Type de gaz {1-3}" ) ,
: Température ,
: Puissance du plasma ,
: Temps de plasma ,
: Flux de gaz de gravure ,
: Pression du réacteur ,
: prénom ( "Type de gaz {1 & 2-3}" ) * : Température ,
: prénom ( "Type de gaz {1 & 2-3}" ) * : Puissance du plasma ,
: prénom ( "Type de gaz {1 & 2-3}" ) * : Temps de plasma ,
: prénom ( "Type de gaz {1 & 2-3}" ) * : Flux de gaz de gravure ,
: prénom ( "Type de gaz {1 & 2-3}" ) * : Pression du réacteur ,
: Température * : Pression du réacteur ,
: Puissance du plasma * : Temps de plasma ,
: Puissance du plasma * : Flux de gaz de gravure ,
: Température * : Température
) ,
Personnalité ( "Moindres carrés standard" ) ,
Accentuation ( "Effet de levier" )
)
) ;
// Créer une liste d'effets
je = 1 ;
Tandis que ( ! Est vide ( arg_i = Arg ( fm_expr , je )) ,
Si ( Commence avec ( Carboniser ( Nom Expr ( arg_i )) , "Effets" ) ,
n = N Arg ( arg_i ) ;
effets = Répéter (
k = 0 ;
{ k ++ ; Arg ( arg_i , k )} ;
n
) ;
Pause () ;
,
je ++
)
) ;
Impression ( effets ) ;
Re: Analyser les informations du script de table de modèleMerci!
Re: Analyser les informations du script de table de modèleVous ne répondez pas complètement à votre question, mais les scripts JMP sont en fait des expressions et peuvent être manipulés tels quels (recherchez 'Head ()', 'Arg ()' et 'NArg {}' dans l'index ou le guide de script). Par exemple:
fm = Expr (
Modèle ajusté (
Y ( : SILICE ) ,
Effets (
: ABRASION Et RS ,
: MODULUS Et RS ,
: ELONG Et RS ,
: DURETÉ Et RS ,
: ABRASION * : ABRASION ,
: ABRASION * : MODULUS ,
: MODULUS * : MODULUS ,
: ABRASION * : ELONG ,
: MODULUS * : ELONG ,
: ELONG * : ELONG ,
: ABRASION * : DURETÉ ,
: MODULUS * : DURETÉ ,
: ELONG * : DURETÉ ,
: DURETÉ * : DURETÉ
) ,
Personnalité ( "Moindres carrés standard" ) ,
Accentuation ( "Criblage des effets" ) ,
Courir
)
) ;
effets = Arg ( fm , 2 ) ;
pour ( je = 1 , je <= NArg ( effets ) , je ++, Impression ( Arg ( effets , je ))) ;
D'autre part, elles peuvent également être traitées comme des chaînes de texte. Dans ce cas, découvrez «RegEx ()» pour l'approche la plus générale et la plus puissante.
Coller du code avec le formatage semble dépendre un peu du système d'exploitation et du navigateur - J'utilise Safari sur un Mac.
Re: Analyser les informations du script de table de modèleBonjour Ian, merci pour votre réponse, cela résout mon problème:
NamesDefaultToHere (1);
dt = table de données actuelle ();
fm = dt << exécuter le script ("Modèle");
try (fm = fm << run); // Parce que ces scripts n'incluent généralement pas la commande run.
effectNames = fm << getEffectNames;
Report (fm) << closeWindow;
mainEffectNames = {};
pour (i = 1, i <= NItems (effectNames), i ++, if (NItems (mots (effectNames) , "*")) == 1, InsertInto (mainEffectNames, effectNames )));
Print (effectNames, mainEffectNames);
Cependant, pour mon apprentissage, existe-t-il un moyen d’analyser les informations de la chaîne en recherchant une parenthèse fermante appartenant à une certaine parenthèse ouvrante et en obtenant le morceau de chaîne entre ces parenthèses?
Et comment formater les scripts sur ce forum pour qu'ils ressemblent à des scripts?
Re: Analyser les informations du script de table de modèleSi cela ne vous dérange pas de lancer le script, vous pouvez faire quelque chose comme:
NamesDefaultToHere ( 1 ) ;
dt = Ouvrir ( "$ SAMPLE_DATA / Tiretread.jmp" ) ;
fm = dt << Modèle ajusté (
Y ( : SILICE ) ,
Effets (
: ABRASION Et RS ,
: MODULUS Et RS ,
: ELONG Et RS ,
: DURETÉ Et RS ,
: ABRASION * : ABRASION ,
: ABRASION * : MODULUS ,
: MODULUS * : MODULUS ,
: ABRASION * : ELONG ,
: MODULUS * : ELONG ,
: ELONG * : ELONG ,
: ABRASION * : DURETÉ ,
: MODULUS * : DURETÉ ,
: ELONG * : DURETÉ ,
: DURETÉ * : DURETÉ
) ,
Personnalité ( "Moindres carrés standard" ) ,
Accentuation ( "Criblage des effets" ) ,
Courir
) ;
effectNames = fm << getEffectNames ;
rapport ( fm ) << Fermer la fenêtre ;
mainEffectNames = {} ;
pour ( je = 1 , je <= NItems ( effectNames ) , je ++, si ( NItems ( Mots ( effectNames [ je ] , "*" )) == 1 , Insérer dans ( mainEffectNames , effectNames [ je ]) )) ;
Impression ( effectNames , mainEffectNames ) ;
Le message 'getEffectNames' donne une expression plus simple, mais vous devez toujours l'analyser pour obtenir uniquement les effets principaux. Il existe d'autres moyens indirects d'obtenir les principaux effets du rapport "FitModel".
Mais vous avez dit "automatiquement créé à partir du DOE personnalisé", auquel cas il serait peut-être plus simple d'obtenir la liste des facteurs à partir de là.