Muy simple, estoy tratando de modularizar algunos gráficos de variabilidad. En total, hay 3-4 parámetros diferentes para los que quiero trazar estos gráficos, por lo que necesito pasar una clave a la función para decirle qué columna trazar y dejar que configure un manejo específico de esa columna. Es decir, qué tipo de transformación debe sufrir esa columna como parte de la operación de trazado.
La forma en que comencé es pasar una cadena y luego usar un conjunto de condicionales para especificar el nombre de la columna que se transformará (colname) y luego la cadena que se aplicará a la transformación (yname).
Probé varios métodos para hacer esto y no importa qué solución use, no puedo hacer que la trama funcione correctamente. La codificación rígida de la Y del gráfico de variabilidad siempre funciona correctamente para los filtros dados, por lo que sé que hay datos presentes, pero parece que no puedo seleccionarlos usando mi enfoque variable. Esto es lo que he intentado para la línea Y del gráfico var hasta ahora:
- Y( Transformar Columna( yname, Fórmula( Columna(colname) ) ) ),
- Alerta JMP: argumento no válido (cuadro de diálogo)
- El grupo no tiene datos porque a todas las filas les faltan valores o están excluidas (ventana de registro)
- Y( Transformar Columna( yname, Fórmula( Columna(dt,colname) ) ) ),
- Alerta JMP: argumento no válido (cuadro de diálogo)
- El grupo no tiene datos porque a todas las filas les faltan valores o están excluidas (ventana de registro)
- Y( Transformar Columna( yname, Fórmula( Columna( Como Columna(colname)) ) ) ),
- Alerta JMP: Columna no resuelta 256 veces (cuadro de diálogo)
- "Argumento no válido 256 veces, una columna o grupo no tiene datos porque todas las filas tienen valores faltantes o están excluidas (registro)
- Y( Transformar Columna( yname, Formula( Columna( As Column(dt,colname)) ) ) ),
- Alerta de JMP: el acceso a la tabla de datos con ámbito requiere una columna o variable de la tabla de datos 256 veces (cuadro de diálogo)
- Argumento no válido 256 veces, una columna o grupo no tiene datos porque todas las filas tienen valores faltantes o están excluidas (registro)
- Y( Transformar Columna( yname, Formula( As Column(colname) ) ) ),
- Alerta JMP: Columna no resuelta 267 veces (cuadro de diálogo)
- (sin errores de registro)
- Y( Transformar Columna( yname, Formula( As Column(dt,colname) ) ) ),
- Alerta de JMP: el acceso a la tabla de datos con ámbito requiere una columna o variable de la tabla de datos 267 veces (cuadro de diálogo)
- (sin errores de registro)
Si no es obvio por mis intentos, todavía no me queda claro cuál es la diferencia entre As Column() y Column(). He visto soluciones en los foros con cualquiera de las dos, así que las probé todas y no llegué a ninguna parte. La única pista que veo es que cuando As Column() se usa de forma independiente, obtengo un número diferente de infracciones de acceso (267) en comparación con el caso en el que está envuelto por Column() (256). Sé que 267 es el número "correcto" de filas que devolverá ese filtro porque codificar el nombre de la columna en la fórmula de transformación traza correctamente 267 filas.
Además, he intentado establecer la variable colname directamente en la columna (colname = :R y colname = ":R") y varias combinaciones de usarlas directamente y/o envolverlas en combinaciones de Column() y As Column() funciona también sin éxito.
¿Alguien puede ver lo que estoy haciendo mal aquí?
Nota: este código exacto no se ha probado, los nombres de las variables se han generalizado.
//
// Build plot functions
//
var_chart = Function( {dutname, ytype, stressname, bias, ver},
{chart, ax_min, ax_max, ax_step, len, colname, yname},
<BR /> ax_min = 0;<BR /> ax_max = 1;<BR /> ax_step = 0.1;<BR />
If(ytype == "r", (colname = "R"; yname = "R [Ω]"));<BR /> If(ytype == "l", (colname = "L"; yname = "L [H]"));<BR /> If(ytype == "c", (colname = "C"; yname = "C [F]"));
If(stressname == "s1", len = 1.1);
If(stressname == "s2", len = 2.2);
If(stressname == "s3", len = 3.3);
chart = Variability(
Y( Transform Column( yname, Formula( As Column(colname) ) ) ),
X( :X1, :X2, :X3, :X4 ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
Show Box Plots( 1 ),
<<SET scale=""></SET>