Realmente disfruté implementando esta idea.Si mi secuencia de comandos puede manejar la selección de varias filas (como para una trama combinada), ¿hay alguna forma de esperar a que se seleccionen todas las filas (como cuando se mantiene presionada la tecla cntrl) antes de activar la secuencia de comandos?
Por ejemplo, si quiero seleccionar las filas 1,3,5... actualmente tengo que seleccionar la fila 1, que activa inmediatamente el script, luego cerrar la ventana generada a partir del script, luego seleccionar la fila 3 (manteniendo presionada la tecla cntrl ), que activa inmediatamente el script, luego cierra la ventana generada a partir del script (con 1 y 3 combinados), luego selecciona la fila 5 (manteniendo presionada la tecla cntrl)... que finalmente activa el script con los 1, 3, y 5. ¿Sería posible seleccionar 1, 3 y 5... y luego ejecutar el script?
La siguiente secuencia de comandos es para una tabla que tiene una columna de fórmula con una secuencia de comandos para hacer gráficos a partir de filas.
Cuando se selecciona una fila, el contenido de varias de las columnas de la fila seleccionada se convierte en una tabla de subconjunto, que se transpone para que se pueda graficar con un gráfico de superposición. La secuencia de comandos original que se encuentra en la columna de fórmula comienza con un aspecto muy diferente y se incluye debajo de la secuencia de comandos de la tabla.
(copie la secuencia de comandos de la tabla en una ventana de secuencia de comandos y ejecute la secuencia de comandos)
Nueva tabla ("tabla de resultados",
Agregar filas (5),
Nueva columna ("Análisis",
Personaje,
Nominal,
Establecer valores ({"ANOVA", "Apple", "Bannana", "Orange", "Peach"})
),
Nueva columna ("Resultado 1",
Numérico,
Continuo,
Formato( "Mejor", 12 ),
Fórmula (Uniforme aleatorio ())
),
Nueva columna ("Resultado 2",
Numérico,
Continuo,
Formato( "", 9 ),
Fórmula (Uniforme aleatorio ())
),
Nueva columna ("Resultado 3",
Numérico,
Continuo,
Formato( "Mejor", 12 ),
Fórmula (Uniforme aleatorio ())
),
Nueva columna ("Resultado 4",
Numérico,
Continuo,
Formato( "Mejor", 12 ),
Fórmula (Uniforme aleatorio ()),
Conjunto seleccionado
),
Nueva columna ("Resultado 5",
Numérico,
Continuo,
Formato( "Mejor", 12 ),
Fórmula (Uniforme aleatorio ())
),
Nueva columna ("Resultado 6",
Numérico,
Continuo,
Formato( "Mejor", 12 ),
Fórmula (Uniforme aleatorio ())
),
Nueva columna ("Resultado 7",
Numérico,
Continuo,
Formato( "Mejor", 12 ),
Fórmula (Uniforme aleatorio ())
),
Nueva columna ("Resultado 8",
Numérico,
Continuo,
Formato( "Mejor", 12 ),
Fórmula (Uniforme aleatorio ())
),
Nueva columna ("Resultado 9",
Numérico,
Continuo,
Formato( "Mejor", 12 ),
Fórmula (Uniforme aleatorio ())
),
Nueva Columna( "Columna con Fórmula para hacer gráficas",
Numérico,
Continuo,
Formato( "Mejor", 12 ),
Fórmula(
Si (Seleccionado (Estado de fila ()),
Evaluar(
Analizar gramaticalmente(
Nombres predeterminados hasta aquí ( 1 );
Borrar Símbolos( 1 );
dt0 = Tabla de datos actuales ();
rn = dt0 << obtener filas seleccionadas;
tn = dt0:Análisis[rn];
dt1 = Tabla de datos ("tabla de resultados") <<
Subconjunto(
Tabla de salida (tn[1]),
columnas seleccionadas ( 0 ),
Filas seleccionadas ( 0 ),
Filas (rn)
);
dt2 = dt1 << columnas(
:Resultado 1,
:Resultado 2,
:Resultado 3,
:Resultado 4,
:Resultado 5,
:Resultado 6,
:Resultado 7,
:Resultado 8,
:Resultado 9
)`;
gráfica1 = Expr(
dt2 << Gráfico de superposición (
Y( Columna( 2 ) ),
Ejes separados ( 1 ),
Conectar a través de perdido( 1 )
)
);
journalgraph1 = Eval( graph1 ) << Obtener Diario;
Nueva ventana( "Ventana de informe para" || tn[1],
Cuadro de texto( "Gráfico de " || tn[1] ),
Cuadro de diario (journgraph1)
);
Cerrar (dt1, sin guardar);
Cerrar (dt2, sin guardar);
)
)
)
)
),
Establecer estados de fila ([0, 0, 0, 0, 1])
)
Este es el script para pegar en la columna de fórmula
( 1 ) ;
() ;
( Seleccionado ( Estado de fila () )
(
(
( 1 ) ;
( 1 ) ;
= tabla de datos actual () ;
= dt0 << obtener filas seleccionadas ;
= dt0 : Análisis [ rn ] ;
= Tabla de datos ( "tabla de resultados" ) << Subconjunto (
1 ] ) ,
0 ) ,
0 ) ,
//,invisible
;
= dt1 << Transponer (
: resultado 1 ,
: resultado 2 ,
: resultado 3 ,
: resultado 4 ,
: Resultado 5 ,
: resultado 6 ,
: resultado 7 ,
: resultado 8 ,
: resultado 9 ,
: columna 11
,
: Análisis [ rn ] ) , //esto no se traduce en la fórmula
1 ] || "para gráfico" ) //,invisible
;
= expr ( dt2 << Gráfico superpuesto ( Y ( columna ( 2 ) ) , Ejes separados ( 1 ) , Conectar a través de desaparecidos ( 1 ) )) ;
= evaluar ( grafico1 ) << Obtener Diario ;
( "Ventana de informe para" || Tennesse [ 1 ] , Caja de texto ( "Gráfico de" || Tennesse [ 1 ]) , Caja de diario ( diario1 )) ;
( dt1 , sin guardar ) ;
( dt2 , sin guardar ) ;
//fin del análisis
//fin de evaluación
; //fin de si
Gracias
Tengo problemas para agregar todo esto a mi script.
Lo que he estado tratando de hacer es obtener la tabla y luego agregar una columna con
" Seleccionado ( Estado de fila ( Fila ())) , tnombre =: Nombre de la prueba [( tabla de datos actual () << obtener filas seleccionadas )[ 1 ]] ;
Incluir ( "C:/Usuarios/..../Pruebas/" || evaluar ( Analizar gramaticalmente ( : Nombre de la prueba )) || ".jsl" ) ; 1 , 0 ) ;"
Aquí "Pruebas" es mi segunda carpeta de secuencias de comandos (la que se usará cuando el usuario haga clic en una fila de la tabla).
Mi primer problema es que no puedo encontrar una manera de hacer esto porque las comillas están causando problemas, y el segundo es que lo que estoy haciendo aquí es parte de una herramienta que quiero que otras personas con las que trabajo sean capaz de usar. ¿Será eso posible dado que ahora tengo un segundo script al que se accede a través de su ruta de archivo (el script está en mi escritorio)?
Otra vez, gracias por tu ayuda
olivia
Primero, verifique la cadena de ruta. El primer argumento debe incluir solo la ruta al directorio del script y, por lo tanto, terminar con una / (barra inclinada).
Para pasar el TestName seleccionado a la variable, debe ser más explícito:
tnombre =: Nombre de la prueba [( tabla de datos actual () << obtener filas seleccionadas )[ 1 ]]
Este código se puede ejecutar mediante la fórmula de la columna (ver el ejemplo a continuación) o en el script llamado.
Si ( Seleccionado ( Estado de fila ( Fila ())) , tnombre =: Nombre de la prueba [( tabla de datos actual () << obtener filas seleccionadas )[ 1 ]] ; Incluir ( "C:/Usuarios/..../su_carpeta_script/" || evaluar ( Analizar gramaticalmente ( : Nombre de la prueba )) || ".jsl" ) ; 1 , 0 ) ;
Sí, eso es exactamente lo que quiero hacer.
El problema que tengo es que necesito volver a poner ese nombre de prueba en el script JMP para poder enviarlo a R para que mi función haga su trabajo...
He intentado esto:
En una columna adicional en mi tabla:
If(Seleccionado(Estado de fila(Fila())), Incluir("C:/Users/....jsl" || Eval(Parse(:TestName)) || ".jsl"); 1, 0)
Y luego en la página del script:
tname = TestName << Obtener texto;
rconn << Enviar(tname,R Nombre("tname"));
Obviamente estoy haciendo algo mal ya que no funciona...
Si se refiere a activar una acción de script seleccionando una fila en la tabla, le sugiero que eche un vistazo a esta demostración en el intercambio de archivos JMP. Se puede invocar cualquier tipo de acción de la que jsl sea capaz seleccionando una fila usando el truco que usa Ian Cox en esa demostración.
En su ejemplo, las secuencias de comandos son en realidad cadenas dentro de las celdas de la tabla, pero debería ser posible invocar secuencias de comandos de tablas o, por qué no, secuencias de comandos independientes mediante la función Incluir().
Por ejemplo, pruebe la siguiente fórmula de columna en una columna oculta para ejecutar secuencias de comandos con el mismo nombre que el contenido de la celda en una columna de caracteres "nombre de prueba".
Si ( Seleccionado ( Estado de fila ( Fila ())) , Incluir ( "tu camino" || evaluar ( : nombre de la prueba ) || ".jsl" ) ; 1 , 0 )
Si el nombre de prueba en la fila tres es "ANOVA", entonces se ejecutará un script ANOVA.jsl guardado en un directorio con la ruta "yourpath" cuando se seleccione la tercera fila (manualmente pero también por script, supongo).