La formule ne fonctionne pas dans une boucle FORBonjour,
travaillant avec un client qui vise à automatiser la collecte de données de diverses études cliniques, nous avons utilisé Action recorder pour obtenir les lignes de script appropriées.
Maintenant, je simplifie le script en utilisant la liste et les boucles pour le rendre générique pour une utilisation plus large.
J'ai pu le faire jusqu'à la ligne 58. Aux lignes 58-61, j'essaie de reproduire ce qui se passe avec les lignes 63-100 en utilisant une boucle FOR et une formule comme indiqué ci-dessous :
For( i = 1, i <= N Items( colList ), i++,
Data Table( "Summary with Dose=0" ) <<
New Column( colList_Sum_3[i],
Numeric,
"Continuous",
Format( "Best", 12 ),
formula( colList_Sum_1[i] - colList_Sum_2[i] )
)
);
Il crée les colonnes appropriées (basées sur une liste) mais pas les formules dans chaque colonne.
J'ai essayé avec Eval/Expr mais je dois avouer que je ne sais pas comment et quand les utiliser.
Merci pour l'aide.
Emmanuel
Re : La formule ne fonctionne pas dans une boucle FOREst-ce que cela fait ce que vous aviez en tête ? Vous pourrez peut-être le faire sans utiliser la gestion des expressions, mais je trouve cette approche plus robuste, en particulier lorsque vous devez traiter des noms de colonnes problématiques (par exemple, lorsque vous avez un opérateur mathématique ou un mot statistique réservé). L'idée est de traiter les deux arguments du message Join qui ont besoin des colonnes comme des expressions, de les construire en y insérant des références de colonne (n'utilisez pas de noms à cause du problème que j'ai mentionné ci-dessus), puis de les insérer dans le Rejoindre message avec Remplacer (que vous pouvez mettre dans Expr donc l'expression est également évaluée). Un thème récurrent est l'utilisation de Nom Expr pour empêcher la variable avec laquelle vous travaillez d'être complètement évaluée (c'est-à-dire que vous voulez traiter le contenu de la variable comme une expression, vous n'êtes pas intéressé par sa valeur évaluée). J'espère que cela t'aides.
enfiler
Re : La formule ne fonctionne pas dans une boucle FORBonjour Emmanuel,
Vous n'êtes que légèrement en retrait. Essayez le script ci-joint. Cela semble fonctionner sur vos exemples de données.Les corrections sont commentées comme //Essayez ceci à la place. Votre code d'origine est commenté.
Meilleur,
Jason
Re : La formule ne fonctionne pas dans une boucle FORRepublié avec le bon script
Re : La formule ne fonctionne pas dans une boucle FORSalut Don, as-tu changé quelque chose dans le script ? Je suppose que vous copiez/collez l'original sans aucun changement ou je l'ai raté.
Re : La formule ne fonctionne pas dans une boucle FORSalut Jason,
il retourne des colonnes contenant une formule : Column( colList_Sum_1[i] ) - /*###*/Column( colList_Sum_2[i] ) /*###*/
mais aucun calcul n'est fait.
Emmanuel
Re : La formule ne fonctionne pas dans une boucle FORDésolé Emmanuel,
Initialement posté le script original. Republié avec le script modifié.
enfiler
Re : La formule ne fonctionne pas dans une boucle FORTout devrait fonctionner jusqu'à la ligne 76 dans mon script édité. Il semble qu'au-delà de cela, vous pourriez résoudre le problème de la même manière que vous l'avez fait avec les boucles ci-dessus ?J'aime la gestion des expressions de Don pour la jointure. Cela vaut la peine d'être considéré. Vous devez toujours gérer les listes de colonnes et les noms de colonnes, vous pourriez donc peut-être récupérer des idées de nos deux scripts.J'enverrai une mise à jour plus tard dans la journée avec un correctif pour les 37 lignes inférieures de votre script.
Re : La formule ne fonctionne pas dans une boucle FORSalut Jason,
dans vos lignes de script éditées 69-76 ne renvoie aucun calcul
For( i = 1, i <= N Items( colList ), i++,
Data Table( "Summary with Dose=0" ) << New Column( colList_Sum_3[i],
Numeric,
"Continuous",
Format( "Best", 12 ),
formula( Column( colList_Sum_1[i] ) - Column( colList_Sum_2[i] ) )
)
);
Pour plus de clarté, les lignes 69-76 (58-61 dans le script original) visent à remplacer les lignes 78-115 (63-100 dans le script original).
Le reste du script est OK c'est sur les lignes 69-76 (58-61 dans le script d'origine) que je suis bloqué.
Re : La formule ne fonctionne pas dans une boucle FORSalut Don, j'ai suivi le e-learning sur les scripts mais j'ai du mal à comprendre Eval, Expr, NameExpr, ... par hasard auriez-vous un cours complémentaire, une documentation qui pourrait m'aider ?