Cómo manejar las comillas en el nombre de la columna cuando se intenta utilizar una fórmula dinámica<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Supongamos que tengo una tabla con encabezados griego y también griego de la siguiente manera:
Griego también griego
Alfa Phi
beta-omega
Gama Zeta
El siguiente script me dará una columna llamada "concat" que combinará las 2 columnas (agregué pestañas entre los símbolos concat para hacerlo más legible).
dt = Tabla de datos actual();
colnames = dt<
colstring=":Nombre(\!"" || char(colnames[1]) || "\!")";
for(i=2,i<=nitems(colnames),i++,
colstring=colstring || "||" || ":Nombre(\!"" || char(colnames ) || "\!")"
);
parsecolstring=parse(colstring);
dt<
Ahora, lo extraño es que si pongo el encabezado de la tabla AlsoGreek entre comillas (como "AlsoGreek"), el código no funciona.Aquí está el resultado del registro de errores (agregué show después de todas las variables en el código anterior para poder ver lo que estaba sucediendo).
colnames = {griego, nombre("\!"También griego\!"")};
Char(colnames[1]) = "Griego";
colstring = ":Nombre(\!"Griego\!")";
colstring = ":Nombre(\!"Griego\!")||:Nombre(\!"\!"También griego\!"\!")";
Se esperaba ")", pero se encontró "También griego".
Línea 1 Columna 25: :Nombre("Griego")||:Nombre(""►TambiénGriego"")
¿Existe alguna solucion para esto?Si no es así, ¿hay alguna manera de extraer las comillas del nombre de la columna?Intenté usar un sustituto para eliminar \!", pero JMP no lo reconoce como una cadena...
¡Cualquier ayuda sería muy apreciada!Tengo >100 columnas con comillas en el nombre de la columna...
Re: Cómo manejar las comillas en el nombre de la columna cuando se intenta utilizar una fórmula dinámicaFue difícil para mí entender lo que intentabas lograr. Pero, si desea concatenar TODOS los nombres de columnas en una tabla JMP y crear una nueva columna con ese nuevo nombre, este código debería funcionar para su ejemplo:
Creando la variable NameofNewColumn y usándola en una declaración de Nueva Columna contenida dentro de la función EVAL....podría ayudarte.
dt = Tabla de datos actual();
colnames = dt<
NombredeNuevaColumna = "";
Para (i = 1, i < N elementos (nombres de columna) +1, i++,
NombredeNuevaColumna = NombredeNuevaColumna || Char(nombres de columna );
);
eval(dt<
Re: Cómo manejar las comillas en el nombre de la columna cuando se intenta utilizar una fórmula dinámicaSupongo que responderé mi propia respuesta...
El problema es que JMP no reconoce qué comillas están asociadas con \!" y cuáles no.Entonces, mi sospecha es que cuando usas una función char en una columna con comillas, y luego intentas analizarla o hacer algo más con esa cadena, te encontrarás con problemas.
Hay dos formas de manejar esto: la primera es colocar todas las columnas que desea concatenar en una lista y luego usar la opción parse(concat(list)).
La otra forma (que es la que usé) es obtener las columnas en una lista y luego eliminar las comillas usando una declaración for simple:
sin comillas = {},
para(i=1,n<=nitems(lista original),i++,
insertar en (sin comillas, sustituir (char (lista original) ),"\!"",""));
como nombre (lista original < );
);
Utilice los nombres de la lista sin comillas para hacer referencia a las columnas de interés y, una vez que haya terminado, puede volver a cambiar los nombres de las columnas a como eran originalmente haciendo lo contrario del script anterior.