Re: JSL: le script pour changer les états de ligne ne fonctionne pasLes formules de colonne de JMP sont évaluées en arrière-plan; pour les tables avec des formules compliquées et de nombreuses lignes, cela permet à JMP de rester interactif pendant les évaluations de formules. Vous pouvez faire défiler la table et travailler avec d'autres tables et plates-formes.
L'envoi du message << runFormulas à la table fait en sorte que les formules soient évaluées avant toute autre chose. Utiliser wait (N) n’est pas une bonne réponse car il n’ya aucun moyen de savoir combien de temps attendre. J'ai essayé d'attendre (0) et ce n'était pas assez long. Une seconde d'attente a fonctionné, mais était un peu plus long que nécessaire. << runFormulas ne réexécute pas les formules si leur évaluation est déjà terminée. Vous pouvez donc l'utiliser sans vous soucier de ralentir le code JSL.
Dans votre exemple, la JSL est toujours en cours d'exécution et aucune possibilité de traitement en arrière-plan des formules de colonne n'a été offerte au moment où la colonne de formule est copiée. Si vous exécutez la dernière ligne séparément, l'évaluation en arrière-plan est effectuée avant l'exécution de la dernière ligne. Les états des lignes sont donc mis à jour avec les valeurs calculées.
JMP sait souvent quand les formules doivent finir d’évaluer; lancer une nouvelle plateforme, par exemple. << CopyToRowStates n'est pas encore au courant. Merci de l'avoir signalé.
Je n'ai pas vu d'accident avec wait (0). Si l'incident est reproductible, veuillez contacter le support technique pour envoyer les fichiers de script et de rapport d'incident.
Re: JSL: le script pour changer les états de ligne ne fonctionne pasavec wait (0); JMP plante. Exécuter des formules, des travaux.
Merci! Cependant, je ne comprends toujours pas pourquoi
Récapituler:
1) je crée un nombre aléatoire
2) Je crée des colonnes d'état des lignes en fonction des nombres aléatoires
3) J'attribue des états de ligne en fonction des colonnes d'état de ligne
Une raison particulière pour laquelle 2) peut s'exécuter sans qu'il soit nécessaire de spécifier des «formules à exécuter» après 1), mais pour que 3) fonctionne, je dois spécifier des formules à exécuter après 2)? Existe-t-il une raison logique ou s'agit-il de l'un des nombreux défauts non documentés du langage de script JSL?
Re: JSL: le script pour changer les états de ligne ne fonctionne pasEssayez d'envoyer le message Exécuter des formules à la table de données. Ce message termine toutes les évaluations de formule avant de passer à la prochaine instruction JSL.
dt << exécute des formules;
Si cela ne fonctionne pas, essayez de mettre wait (0) à la place.
JSL: le script pour changer les états des lignes ne fonctionne pasJ'ai assemblé ce script simple pour diviser une table de données en sous-ensembles de formation, de test et de validation, en créant des colonnes d'état des lignes.
J'ai ensuite une ligne de code à la fin destinée à copier les états de ligne de la colonne d'état de ligne 'Training set'.
La chose étrange est que si j'exécute tout le script, les états des lignes ne sont pas copiés. Si je lance tout sauf la dernière ligne en premier, puis la dernière ligne séparément, cela fonctionne.
Des idées pour résoudre le problème? Suis-je en train de manquer quelque chose ou est-ce un bug?
Merci!
New Column( "Random", Numeric, Formula( Random Uniform() ) );
New Column( "Data Set Indicator",
Character,
Formula( If( :Random <= 0.6, "Training", 0.6 < :Random <= 0.8, "Validation", "Test" ) )
);
New Column( "Training set",
Row State,
set formula(
Combine States(
Excluded State( :"Data Set Indicator" != "Training" ),
Hidden State( :"Data Set Indicator" != "Training" )
)
)
);
New Column( "Validation set",
Row State,
set formula(
Combine States(
Excluded State( :"Data Set Indicator" != "Validation" ),
Hidden State( :"Data Set Indicator" != "Validation" )
)
)
);
New Column( "Test set",
Row State,
set formula(
Combine States(
Excluded State( :"Data Set Indicator" != "Test" ),
Hidden State( :"Data Set Indicator" != "Test" )
)
)
);
Column( "Training set" ) << Copy to row states();
Re: JSL: le script pour changer les états des lignes ne fonctionne pasÀ la suite de ce fil, depuis JMP 12, le message << Run Formulas () est appelé automatiquement en arrière-plan avec une nouvelle table ().