Hola a todos,
Tengo dificultades con la referencia adecuada de un informe cuando intento enviarle el comando <
Tengo un script automatizado para realizar ciertos análisis y en este script obtengo una lista de los informes abiertos para obtener el report_of_interest, consulte JSL a continuación:
report_windows = Get Window List( "Report" );
report_of_interest = Empty();
For Each( {report_windows}, report_windows,
outline_title = Try( report_windows[Outline Box( 1 )] << Get Title, "" );
If( Starts With( outline_title, "Generalized " ),
report_of_interest = report_windows;
Break();
);
);report_of_interest es una referencia al DisplayBox[HeadBox] del informe. Usando esta referencia, puedo hacer cosas como enviar el comando para realizar una simulación de una columna de interés en el informe, por ejemplo, una columna de estimación de parámetros.
report_of_interest[Number Col Box( 8 )] << Simulate(
2500,
Random Seed(.),
Out( :ColOut ),
In( :ColIn )
);
Sin embargo, cuando intento enviar el comando <
report_of_interest << (Fit[1] << Save Simulation Formula)
Recibo el siguiente error en la ventana de registro:
El objeto 'HeadBox' no reconoce el mensaje 'Enviar'; tal vez te refieres a uno de estos: <<<<<<<<<<<<< <<<<<<<<<<< <
Si intento utilizar el título del esquema, la variable título_esquema de arriba, aparece el siguiente error en el registro:
Enviar espera objeto programable en el acceso o evaluación de 'Enviar', título_esquema << /*###*/(Fit[1] << Guardar fórmula de simulación) /*###*/
Lo que no entiendo es la diferencia en la referencia a los ejemplos en la ayuda del Índice de secuencias de comandos frente a mi código JSL. Del primer ejemplo en la ayuda del Índice de secuencias de comandos se muestra lo siguiente:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Diabetes.jmp" );
fm = dt << Fit Model(
Y( :Y ),
Effects( :Age, :Gender, :BMI, :BP, :Total Cholesterol, :LDL, :HDL, :TCH, :LTG, :Glucose ),
Personality( "Generalized Regression" ),
Generalized Distribution( "Normal" ),
Run( Fit( Estimation Method( Lasso( Adaptive ) ), Validation Method( KFold, 5 ) ) )
);
fm << (fit[1] << Save Simulation Formula);
El fm es una variable que hace referencia a lo siguiente: Fit Generalized[]. En los ejemplos de Scripting Index, todos pueden guardar la columna de simulación en la tabla de datos utilizando esta referencia.
Una gran diferencia que puedo ver es que en los ejemplos, todos pueden enviar a la tabla de datos el comando Ajustar modelo () con el subcomando Ejecutar (Ajustar ()). No puedo hacer eso en mi código JSL porque está más generalizado y no siempre lo ejecuto en las mismas columnas para los factores Y, Respuesta y X.
El JSL análogo en mi código es el siguiente:
avdt << Fit Model(
Y( Eval( YCols ) ),
Validation( :Validation ),
Personality( "Generalized Regression" )
);
Tenga en cuenta que no tengo ningún efecto en la lista porque estos pueden cambiar según la tabla de datos con la que estoy trabajando. Tengo una sección de código antes que solicita indicar qué columna es la columna de respuesta y, por lo tanto, puedo incluir Y(Eval(ycols)) en Fit Model() porque el código JSCL tiene una referencia a esa columna.
Desafortunadamente, no puedo hacer nada como fm = avdt << Fit Model() y hacer referencia a él de esa manera porque una vez que ingreso todos los efectos y hago clic en Ejecutar en la ventana de la plataforma GenReg, fm devuelve el error de que es un objeto eliminado. referencia[]. De hecho, si comenta la línea con Run() en el ejemplo de la ayuda de Scripting Index y la ejecuta, hace clic en Ejecutar en el cuadro de diálogo Ajustar modelo, el código de ejemplo no guardará la columna de simulación en la tabla de datos.
Perdón por la publicación tan larga, pero sentí que necesitaba poner algo de contexto detrás del problema que tengo. Cualquier ayuda para corregir la referencia adecuada de report_of_interest, para poder enviar la <
¡Gracias!,
DS
Una diferencia es que está utilizando referencias diferentes, el ejemplo del índice de secuencias de comandos usa "Fit Generalized[]" y está usando "DisplayBox[HeadBox]". Lo más probable es que puedas obtener una referencia a Fit Generalized usando algo como
report_of_interest[OutlineBox(1)] << get scriptable object;
Hola @jthi ,
¡Gracias, como siempre, por tu rápida y útil respuesta! Sí, eso funciona. También me di cuenta de que podía solucionar esto cambiando una parte anterior de mi código donde solicita que se modele la columna de respuesta, de modo que también solicite los efectos del modelo al mismo tiempo. De esta manera, podría incluir fm = dt<
No he tenido que usar << Obtener objeto programable con frecuencia, por lo que no es un comando que realmente me venga a la mente. Agradezco la ayuda.
¡Gracias!,
DS