JSL: tratar la variable dentro de "<< establecer fórmula" Fórmula como constante/literalSiento que debería haber una manera fácil de hacer esto, pero me está eludiendo...
Ejemplo:
blockSize = 15;
col<<set formula(Sequence(1,1000,1,blockSize));
Después de ejecutar el script, vea la fórmula en la tabla de datos: "blockSize" todavía se usa como la cuarta entrada para Sequence().
Realmente no quiero esto, ya que voy a definir dinámicamente blockSize dentro de un bucle que cambia para cada columna por la que itera. ¿Cómo obtengo que la fórmula de la tabla de datos sea "Secuencia (1,1000,1,15)" en lugar de "Secuencia (1,1000,1, tamaño de bloque)"?
¡Gracias!
Re: JSL: tratar la variable dentro de "<< establecer fórmula" Fórmula como constante/literalUn enfoque más usando el patrón 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 variableFórmula con valor de tamaño de bloque sustituido por la variable
El problema que resuelven todas estas soluciones es evaluar previamente parte de la expresión, pero no toda.
EvalExpr() es una función que evalúa parcialmente su argumento. Las partes que desea evaluar están dentro de las funciones Expr(). (De ahí el nombre, EvalExpr.) El resultado es una expresión, que debe evaluarse para realizar la operación setFormula.
Re: JSL: tratar la variable dentro de "<< establecer fórmula" Fórmula como constante/literalA veces me gusta usar cadenas de comandos con reemplazo de variables, especialmente cuando necesito usar el mismo comando más de una vez y si la fórmula o expresión tiene más de una variable.
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: tratar la variable dentro de "<< establecer fórmula" Fórmula como constante/literalblockSize = 15;
Eval(
Substitute(
Expr( col << Set Formula( Sequence( 1, 1000, 1, bbb ) ) ),
Expr( bbb ),
blockSize
)
);