Configurer une formule avec un paramètreSalut,
J'essaie de configurer une formule dans une colonne d'un tableau avec un paramètre dans la formule. Il est facile à faire avec des clics de souris. Mais je dois écrire un script. Ci-dessous la commande que j'ai écrite :
Column( Data Table( "field_data" ), "diameter Prediction Formula" ) << Set Formula( Parameter({tuning = 1},eval(Name Expr(f11)) ));
Ma formule est stockée dans 'f11'. La formule va changer, je ne peux donc la référencer qu'en utilisant une variable et ne pas écrire la formule réelle. Lorsque j'exécute cette ligne, la formule est évaluée correctement, mais lorsque je clique sur la colonne pour vérifier la formule, elle affiche " eval(Nom Expr(f11)) ". Existe-t-il un moyen de mettre la formule réelle ici? S'il vous plaît aider. Merci!!
Re : Créer une formule avec un paramètreMerci beaucoup Ian !! Cela marche!! 
Re : Créer une formule avec un paramètreJim a montré comment utiliser 'Substitute()' pour construire l'expression de la formule. Notez que, pour voir à quoi ressemble l'expression requise, vous pouvez toujours créer la colonne de formules à la main et envoyer à la colonne résultante un message 'getScript' ou 'getFormula'. Vous pouvez donc vous baser sur l'exemple de Jim pour obtenir :
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
f11 = expr(:Height);
dt << New Column( "Column 6" );
Eval(
Substitute(
Expr(
:column 6 << set formula(tuning=2; :weight * __f11__ )
:column 6 << setFormula( Parameter( {b0 = initialValueTBD}, :weight * (__f11__ * b0) ) ),
),
Expr(initialValueTBD), 2,
Expr( __f11__ ), evalexpr(f11)
)
);
Re : Créer une formule avec un paramètreMerci txnelson. Désolé, j'aurais dû vous dire la prochaine étape de mon analyse également en raison de laquelle il est important pour moi de définir le paramètre de la manière que j'ai mentionnée plus tôt.
J'effectue une régression non linéaire en utilisant la colonne avec la formule (et le paramètre). Maintenant, si je définis le paramètre comme vous l'avez défini dans votre code, la régression non linéaire ne considérera pas le "réglage" comme un paramètre qu'il doit optimiser. Il le considérera comme un valeur fixe.Donc, cela ne me donnera pas la valeur optimisée de "tuning". Par contre, si je définis "tuning" comme paramètre, alors la régression non linéaire me donnera la valeur du paramètre "tuning" qui minimise la somme des carrés.
Alors, s'il vous plaît, faites-moi savoir s'il existe un moyen de définir le paramètre "réglage" dans la même colonne afin que la régression non linéaire le considère comme un paramètre qu'il doit optimiser et non comme une valeur fixe. Merci!!
Désolé de ne pas avoir été clair plus tôt.
Re : Créer une formule avec un paramètreUn paramètre définit simplement une valeur de variable mémoire dans la formule, qui peut être émulée en plaçant simplement ce code dans la formule.Voir ma nouvelle variation sur la formule
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
f11 = expr(:Height * tuning);
dt << New Column( "Column 6" );
Eval(
Substitute(
Expr(
:column 6 << set formula(tuning=2; :weight * __f11__ )
),
Expr( __f11__ ), evalexpr(f11)
)
);Re : Créer une formule avec un paramètreMerci txnelson, Je comprends votre code. Mais mon problème a 1 chose supplémentaire. Je dois également définir un paramètre dans ma formule. Laissez-moi vous expliquer à l'aide de l'exemple de code que vous avez fourni. La formule de la colonne 6 vous a été attribuée avec succès. Maintenant, après cela, j'ai également besoin d'un script pour effectuer les opérations suivantes, qui peuvent être effectuées via des clics de souris comme suit :
1) Faites un clic droit sur la colonne 6. Allez dans "Formule.."
2) Sélectionnez "Paramètres" dans le menu déroulant (près du coin inférieur gauche)
3) Cliquez sur "Nouveau paramètre"
4) Attribuez un nom et une valeur au paramètre
5) Cliquez sur OK
Veuillez me faire savoir si cela peut être fait. Merci!!
Re : Créer une formule avec un paramètreVous devez forcer l'évaluation dans la formule, et j'ai trouvé le moyen le plus simple de le faire en utilisant Substitute()
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
f11 = ":Height";
dt << New Column( "Column 6" );
Eval(
Substitute(
Expr(
:column 6 << set formula( :weight * __f11__ )
),
Expr( __f11__ ), Parse( f11 )
)
);