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 manera de esperar a que se seleccionen todas las filas (como cuando se mantiene presionada la tecla Ctrl) antes de ejecutar 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 Ctrl ), que inmediatamente activa 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 Ctrl)... que finalmente activa el script con los 1, 3, y 5. ¿Sería posible seleccionar 1, 3 y 5... y luego ejecutar el guión?
El siguiente script es para una tabla que tiene una columna de fórmula con un script para crear 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 poder graficarla con un diagrama superpuesto. El script original que se encuentra en la columna de fórmula comienza luciendo muy diferente y se incluye debajo del script de la tabla.
(copie el script de la tabla en una ventana de script y ejecute el script)
Nueva tabla ("tabla de resultados",
Agregar filas (5),
Nueva columna( "Análisis",
Personaje,
Nominal,
Establecer valores( {"ANOVA", "Apple", "Bannana", "Naranja", "Melocotón"})
),
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()),
Establecer 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 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áfico1 = Expr(
dt2 << Gráfico de superposición (
Y(Columna(2) ),
Ejes separados( 1 ),
Conectar a través de falta (1)
)
);
diariograph1 = Eval(graph1) << Obtener diario;
Nueva ventana( "Ventana de informe para " || tn[1],
Cuadro de texto( "Gráfico de " || tn[1] ),
Cuadro de diario( diariograph1 )
);
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 la 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és ( dt2 << Trazado superpuesto ( Y ( columna ( 2 ) ) , Ejes separados ( 1 ) , Conectar a través de falta ( 1 ) )) ;
= evaluar ( gráfico1 ) << Obtener diario ;
( "Ventana de informe para" || Tennesse [ 1 ] , Caja de texto ( "Gráfico de" || Tennesse [ 1 ]) , Caja de diario ( diario1 )) ;
( dt1 , no guardar ) ;
( dt2 , no guardar ) ;
//fin del análisis
//fin de la evaluación
; //fin de si
Gracias
Tengo problemas para agregar todo esto a mi script.
Lo que he estado intentando hacer es obtener la tabla y luego agregar una columna con
" Seleccionado ( Estado de la fila ( Fila ())) , nombre =: 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 script (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 sólo la ruta al directorio del script y, por tanto, terminar con una / (barra).
Para pasar el TestName seleccionado a la variable, debe ser más explícito:
nombre =: 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 ejemplo a continuación) o en el script llamado.
Si ( Seleccionado ( Estado de la fila ( Fila ())) , nombre =: 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 recuperar ese nombre de prueba en el script JMP para poder enviarlo a R para que mi función haga su trabajo...
He probado esto:
En una columna adicional en mi tabla:
If(Selected(Estado de fila(Fila())), Include("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 porque no funciona...
Si te refieres a activar una acción de script seleccionando una fila en la tabla, te sugiero que eches un vistazo a esta demostración en el intercambio de archivos JMP. Cualquier tipo de acción que jsl sea capaz de realizar se puede invocar seleccionando una fila usando el truco que usa Ian Cox en esa demostración.
En su ejemplo, los scripts son en realidad cadenas dentro de las celdas de la tabla, pero debería ser posible invocar scripts de tabla o, por qué no, scripts independientes utilizando la función Include().
Por ejemplo, pruebe la siguiente fórmula de columna en una columna oculta para ejecutar scripts con el mismo nombre que el contenido de la celda en una columna de caracteres "nombre de prueba".
Si ( Seleccionado ( Estado de la 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 (supongo que manualmente pero también mediante un script).