Obtener secuencias de comandos de columna utilizando For LoopTengo una tabla de datos con un montón de nuevas columnas basadas en fórmulas que laboré manualmente. Quiero crear un script JSL que me permita recrear todas estas columnas en otra tabla.
La siguiente secuencia de comandos devolverá lo que quiero para una sola columna:
dt=current data table();
column(dt,1) << Get script;
Quería automatizarlo usando un bucle FOR, pero no puedo hacerlo funcionar. Cualquier sugerencia sobre cómo solucionar este problema sería muy apreciada!
Esto es lo que intenté:
dt=current data table();
j= N cols(dt);
For( i = 1, i <=j , i++,
Column(dt,i) << Get Script;
);
Re: Obtener scripts de columnas usando For LoopHola @ cjohnson6 ,
los Copia de comandos para el complemento de columnas seleccionadas hará exactamente esto: seleccione la columna de su fórmula, ejecute el complemento y la secuencia de comandos combinada para todas las columnas seleccionadas se copiará en su portapapeles para que pueda pegarla en su flujo de trabajo JSL.
@Julian
Re: Obtener scripts de columnas usando For LoopPara referencia, la parte de negocios del script de complemento es esta:
//collist is a list of the formula columns to be copied
For( i = 1, i <= N Items( collist ), i++,
//create a new column in the copy to data table
//substitute replaces the form in the New Column() expression with the formula from
//the source column
Eval(
Substitute(
Expr(
dt2 <<
New Column(
Column(
chosen,
Char( collist[i] )
) << get name,
formula( form )
)
),
Expr( form ),
Column( chosen, Char( collist[i] ) )
<< get formula
)
)
);
Re: Obtener scripts de columnas usando For LoopAcabo de subir un Copiar complemento de fórmulas al Intercambio de archivos .
Le brindará una forma interactiva de hacerlo desde el menú de complementos.

No hay necesidad de escribir tu propio guión.
Re: Obtener scripts de columnas usando For LoopPuede obtener el script para toda la tabla de datos a la vez
dt = Current Data Table();
myScript = dt << get script;
Su inconveniente es que traerá todos los datos incrustados en el script. Lo más fácil es eliminar primero los datos y luego recuperar el script.
dt = Current Data Table();
dt << select all rows << delete rows;
myScript = dt << get script;
Entonces se convierte en una simple cuestión de editar el script recuperado.
Con respecto a su secuencia de comandos, lo que supongo que está buscando es mostrar los resultados de su secuencia de comandos << get en el registro, para que pueda cortar y pegar desde allí. JMP normalmente muestra los últimos resultados de la última instrucción cuando se ejecuta un script. Por lo tanto, cuando ejecuta solo una columna << obtener secuencia de comandos, se muestran los resultados. Si desea hacerlo en un bucle, deberá forzar los resultados en el registro mediante una función de Escritura, Impresión o Mostrar.
dt = Current Data Table();
j = N Cols( dt );
For( i = 1, i <= j, i++,
Show( Column( dt, i ) << Get Script )
);
O, si buscaba mantener los valores en una estructura con la que podría trabajar mediante programación, podría colocar los resultados en una lista
dt = Current Data Table();
myList = {};
j = N Cols( dt );
For( i = 1, i <= j, i++,
myList[i] = Column( dt, i ) << Get Script
);