JSL : traiter la variable dans la formule "<< définir la formule" comme constante/littéraleJ'ai l'impression qu'il devrait y avoir un moyen simple de le faire, mais cela m'échappe...
Exemple:
blockSize = 15;
col<<set formula(Sequence(1,1000,1,blockSize));
Après avoir exécuté le script, affichez la formule dans datatable - "blockSize" est toujours utilisé comme quatrième entrée pour Sequence().
Je ne veux pas vraiment cela, car je vais définir dynamiquement blockSize dans une boucle qui change pour chaque colonne parcourue. Comment faire en sorte que la formule de la table de données soit « Sequence(1,1000,1,15) » au lieu de « Sequence(1,1000,1, blockSize) » ?
Merci!
Re: JSL : traiter la variable dans la formule "<< définir la formule" comme constante/littéraleUne autre approche utilisant le modèle eval(evalexpr( ... expr( x ) ... ))
dt=newtable("example", newcolumn("col"));
blockSize = 15;
<STRONG>eval</STRONG>(<STRONG>evalexpr</STRONG>(col<<SET formula="">expr(blockSize)))));</SET>
Formula with blocksize value substituted for the variableFormula with blocksize value substituted for the variableFormule avec une valeur de taille de bloc remplacée par la variable
Le problème que toutes ces solutions résolvent est de pré-évaluer une partie de l’expression, mais pas la totalité.
EvalExpr() est une fonction qui évalue partiellement son argument. Les parties que vous souhaitez évaluer se trouvent dans les fonctions Expr(). (D'où le nom, EvalExpr.) Le résultat est une expression qui doit être évaluée pour effectuer l'opération setFormula.
Re: JSL : traiter la variable dans la formule "<< définir la formule" comme constante/littéraleDans certains cas, j'aime utiliser des chaînes de commande avec remplacement de variable, en particulier lorsque je dois utiliser la même commande plusieurs fois et si la formule ou l'expression comporte plusieurs variables.
dt = New Table( "Testit",
Add Rows( 1500 ),
New Column( "bbb", Numeric, "Continuous", Format( "Best", 12 ), ),
New Column( "ccc", Numeric, "Continuous", Format( "Best", 12 ), ),
);
cmdStr = "^curcol^ << set formula(Sequence(1,1000,1,^blocksize^));";
curcol = ":bbb";
blocksize = 15;
eval(parse(evalInsert(cmdStr)));
// Eval Insert substitutes the variable values delimited by ^
// Parse converts the string to an expression
// Eval runs the expression
// uncomment the next line to see results of evalInsert
// show(evalInsert(cmdStr) );
//==can reuse===
curcol =":ccc" ;
blocksize = 5;
eval(parse(evalInsert(cmdStr)));
Re: JSL : traiter la variable dans la formule "<< définir la formule" comme constante/littéraleblockSize = 15;
Eval(
Substitute(
Expr( col << Set Formula( Sequence( 1, 1000, 1, bbb ) ) ),
Expr( bbb ),
blockSize
)
);