Entrada del usuario para la secuencia de comandos de pares coincidentesMe gustaría crear un script JMP para pares coincidentes, donde el usuario ingresaría las columnas para los pares coincidentes y luego podría obtener las columnas seleccionadas que se ingresaron.
así que algo como
dt=tabla de datos actual();
pares emparejados();
Y, Respuesta emparejada << Obtener seleccionado;
Luego quiero usar las columnas seleccionadas en mis propias fórmulas. Pero no puedo entender cómo seleccionar las columnas.
Re: Entrada de usuario para script de par coincidenteTengo esto funcionando como un script de dos pasos. Si lo encuentra, por favor hágamelo saber. Me gustaría combinarlos y convertirlos en un complemento.
Re: Entrada de usuario para script de par coincidentePor lo general, la secuencia de comandos mostraría un cuadro de diálogo modal para pedirle al usuario que seleccione las columnas para el análisis. Descarga el cuadro de diálogo cuando el usuario lo cierra. Ahora tiene las columnas para iniciar la plataforma y continuar con otros cálculos.
Hubo una discusión muy reciente sobre cómo usar el diálogo de inicio como lo hizo pero obtener una referencia a la plataforma y controlar la evaluación del resto del script. No puedo encontrarlo en este momento...
Re: Entrada de usuario para script de par coincidenteEstoy tratando de hacer un script que ejecute la plataforma de pares coincidentes, obtenga las columnas que colocan en pares coincidentes y luego use esas columnas para cálculos adicionales.
Re: Entrada de usuario para script de par coincidenteNo entiendo lo que estás tratando de hacer. Pensé que el usuario ya tendría abierta la plataforma Matched Pairs antes de ejecutar su secuencia de comandos y necesita descubrir las columnas de datos en el rol Y. Su código (a continuación) simplemente abrirá el cuadro de diálogo de inicio de Matched Pairs en su lugar:
dt = current data table();
Matched Pairs();
Por lo tanto, no habrá ningún cuadro de esquema para hacer referencia.
Re: Entrada de usuario para script de par coincidenteAcabo de hacer esto:
dt= tabla de datos actual ();
Pares emparejados ();
// encontrar la plataforma Matched Pairs y obtener expresión para ella
ventana = Obtener lista de ventanas ();
Para ( w = 1 , w <= N elementos (ventana), w++,
título = ventana[w] << Obtener título de ventana ;
Si ( Contiene ( título, "Pares emparejados" ),
obj = ventana[w][ ContornoCuadro ( 1 )] << Obtener objeto programable ;
s = objeto << Obtener guión ;
Romper ();
);
);
// aislar Y() argumento con nombre
s = Argentina ( Nombre Expr. ( s ), 1 );
n respuesta = N argumento ( Nombre Expr. ( s ) );
// obtener columnas de datos en el rol Y
columna ref = Lista ();
Para ( c = 1 , c <= n respuesta, c++,
Insertar en (referencia de columna, Argentina ( Nombre Expr. ( s ), c ) );
);
// examinar los resultados o usar las referencias de columna en el resto del script para una fórmula
Espectáculo (referencia de columna);
Y esta parte no funciona, recibo este error:
No se puede incluir un subíndice en el cuadro de visualización en el acceso o la evaluación de 'ventana[w][Cuadro de esquema(1)]',ventana[w][/*###*/Cuadro de esquema(1)]
Estaba tratando de asegurarme de que esta parte funcionara antes de hacer los cálculos con las columnas seleccionadas.
Re: Entrada de usuario para script de par coincidenteNames Default to Here( 1 );
// simulate actions by user before running the script
dt = Open( "$SAMPLE_DATA/Fitness.jmp" );
dt << Matched Pairs(
Y( :Runtime, :RunPulse, :RstPulse, :MaxPulse ),
Separate Pairs( 0 ),
Reference Frame( 0 )
);
// your script begins here
// find Matched Pairs platform and get expression for it
window = Get Window List();
For( w = 1, w <= N Items( window ), w++,
title = window[w] << Get Window Title;
If( Contains( title, "Matched Pair" ),
obj = window[w][OutlineBox(1)] << Get Scriptable Object;
s = obj << Get Script;
Break();
);
);
// isolate Y() named argument
s = Arg( Name Expr( s ), 1 );
n response = N Arg( Name Expr( s ) );
// get data columns in Y role
col ref = List();
For( c = 1, c <= n response, c++,
Insert Into( col ref, Arg( Name Expr( s ), c ) );
);
// examine results, or use the column references in the rest of the script for a formula
Show( col ref );
Re: Entrada de usuario para script de par coincidenteSi estoy entendiendo esto bien, esto funcionará si ponen dos Y. ¿Qué pasa si ponen más de dos Y? ¿Puedes ponerlo como una lista o matriz? Luego recorrer la lista?
Re: Entrada de usuario para script de par coincidenteDespués de publicar una solución, me di cuenta de que si mi interpretación es correcta, no tendrá una referencia al objeto Matched Pairs. Tendrás que encontrarlo. Aquí hay una versión actualizada del script.
Names Default to Here( 1 );
// simulate actions by user before running the script
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Matched Pairs( Y( :height, :weight ), Reference Frame( 1 ) );
// your script begins here
// find Matched Pairs platform and get expression for it
window = Get Window List();
For( w = 1, w <= N Items( window ), w++,
title = window[w] << Get Window Title;
If( Contains( title, "Matched Pair" ),
obj = window[w][OutlineBox(1)] << Get Scriptable Object;
s = obj << Get Script;
Break();
);
);
// get data columns in Y role
y1 = Arg( Arg( Name Expr( s ), 1 ), 1 );
y2 = Arg( Arg( Name Expr( s ), 1 ), 1 );
// examine results, or use the column references in the rest of the script for a formula
Show( y1, y2 );
Re: Entrada de usuario para script de par coincidenteInterpreto su solicitud en el sentido de que el usuario ya lanzó Matched Pairs y desea ejecutar un script en su contra. Es decir, su script no le pide al usuario las columnas ni lanza la plataforma en sí.
No puedo encontrar un mensaje que devuelva las columnas de datos utilizadas en el rol Y de Matched Pairs. Tomé un enfoque en el que obtengo el script para la plataforma lanzada y luego lo analizo para obtener las columnas de datos.
Names Default to Here( 1 );
// simulate actions by user before running the script
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
mp = dt << Matched Pairs( Y( :height, :weight ), Reference Frame( 1 ) );
// script begins here
s = mp << Get Script;
y1 = Arg( Arg( Name Expr( s ), 1 ), 1 );
y2 = Arg( Arg( Name Expr( s ), 1 ), 1 );
// examine results, or use the column references in the rest of the script for a formula
Show( y1, y2 );