<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola, me gustaría ingresar rápidamente varias columnas con la misma fórmula general pero con diferentes variables.
Intenté lo siguiente, pero claramente, no estoy usando la sintaxis adecuada para llamar al elemento Fomula en la función Nueva columna:
Nombres Predeterminados a Aquí (1);
dt = Tabla de datos actuales ();
cc = Ncol (dt); // Conservar el número de columna original
Para (i=9,i<= cc, i = i+2,
Nueva columna ("Delta" || Nombre de columna (i+1),
numérico,
continuo,
Fórmula (:Nombre de columna(i+1) - :Nombre de columna (i)) // Problema con la sintaxis
);
);
Gracias por su ayuda.
Atentamente.
este script podría construir algo cercano a lo que está buscando.el parámetro Fórmula para la función Nueva columna necesita una fórmula completamente construida, en la forma en que debe estar cuando realmente se ejecuta, que es después de que se ejecuta la secuencia de comandos.la siguiente estrategia eval( evalexpr( ... expr(...) ... expr(...) ... ) ) es una forma de hacer lo que necesita.expr() se usa para etiquetar las partes que necesitan ser evaluadas.evalexpr() los busca y los evalúa.eval() evalúa la expresión devuelta por evalexpr.Tenga en cuenta que el signo menos entre los dos expr() NO se evalúa dentro del ciclo for, pero los nombres [i+1] SÍ se evalúan (mediante evalexpr) y NewColumn SÍ se evalúa (mediante eval).
<
dt = Nueva tabla ("Sin título",
Agregar filas (1),
Nueva columna ("a", Numérico, "Continuo", Formato ("Mejor", 12), Establecer valores ([1])),
Nueva columna ("b", Numérico, "Continuo", Formato ("Mejor", 12), Establecer valores ([2])),
Nueva columna ("c", Numérico, "Continuo", Formato ("Mejor", 12), Establecer valores ([4])),
Nueva columna ("d", Numérico, "Continuo", Formato ("Mejor", 12), Establecer valores ([8])),
Nueva columna ("e", Numérico, "Continuo", Formato ("Mejor", 12), Establecer valores ([16])),
Nueva columna ("f", Numérico, "Continuo", Formato ("Mejor", 12), Establecer valores ([32]))
);
cc = Ncol (dt);
nombres=dt<
Para( i = 1, i <= cc, i = i + 2,
Eval( // evalúa la expresión devuelta por...
Eval Expr( // evalúa la expresión incrustada...
New Column( "Delta " || char(names[ i + 1 ]), // convierte la columna en una cadena
numérico, continuo,
// La fórmula no se evaluará por sí sola.Necesita DOS expr para este caso
Fórmula( Expr( nombres[ i + 1 ] ) - Expr( nombres[ i ] ) )
)
)
)
);
/* ----- script resultante -----------------
Nueva tabla ("Sin título",
Agregar filas (1),
Nueva columna ("a", Numérico, "Continuo", Formato ("Mejor", 12), Establecer valores ([1])),
Nueva columna ("b", Numérico, "Continuo", Formato ("Mejor", 12), Establecer valores ([2])),
Nueva columna ("c", Numérico, "Continuo", Formato ("Mejor", 12), Establecer valores ([4])),
Nueva columna ("d", Numérico, "Continuo", Formato ("Mejor", 12), Establecer valores ([8])),
Nueva columna ("e", Numérico, "Continuo", Formato ("Mejor", 12), Establecer valores ([16])),
Nueva columna ("f", Numérico, "Continuo", Formato ("Mejor", 12), Establecer valores ([32])),
Nueva columna ("Delta b", Numérico, "Continuo", Formato ("Mejor", 10), Fórmula (: p - :a ) ),
Nueva columna ("Delta d", Numérico, "Continuo", Formato ("Mejor", 10), Fórmula (: d -: c)),
Nueva columna ("Delta f", Numérico, "Continuo", Formato ("Mejor", 10), Fórmula (:f -:e))
)
*/
