Problema : ejecuto un script para cargar datos de una base de datos. Elimino todas las fórmulas de la tabla de datos. Copio el script de la tabla usando el menú del triángulo rojo. Pego el guión de la tabla en una ventana de guión. Ejecuto el script. La tabla resultante de la secuencia de comandos de la tabla tiene una agrupación de columnas diferente y arroja las columnas (vea la captura de pantalla que muestra el panel Columnas de la tabla original y la tabla creada por la secuencia de comandos de la tabla una al lado de la otra. Ver también los archivos adjuntos para referencia).

Inicialmente sospeché que esto se debía a que la secuencia de comandos de la tabla no conservaba los espacios en blanco iniciales en los nombres de las columnas, pero como muestra la siguiente captura de pantalla, los espacios en blanco iniciales son de hecho parte de la secuencia de comandos de la tabla, simplemente no se consideran en la tabla recreada a partir de la guion de mesa

¿Hay alguna forma de recrear realmente la tabla de datos original, incluidos los espacios en blanco en los nombres de las columnas? ¿o es generalmente una mala estrategia de secuencias de comandos?
Aunque nunca usaría espacios en blanco iniciales en el nombre de la columna (también evitaría la mayoría de los caracteres especiales), en este caso diría que debería funcionar, ya que parece ser un nombre de columna válido en JMP.Yo diría que esto es un error con Nueva columna.
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(1),
New Column("A", Numeric, "Continuous", Format("Best", 12), Set Values([1])),
New Column(" A", Numeric, "Continuous", Format("Best", 12), Set Values([2]))
);
wait(1);
Column(dt, 2) << Set Name(" A");
wait(1);
dt << New Column(" A");
La única solución "rápida" que me viene a la mente es agregar <
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(1),
New Column("A", Numeric, "Continuous", Format("Best", 12), Set Values([1])),
New Column(" A", Numeric, "Continuous", Format("Best", 12), Set Values([2]), << Set Name(" A"))
);
por lo que primero tendría que obtener el script en el portapapeles y luego obtenerlo como texto y modificarlo antes de ejecutarlo.
Este es un ejemplo muy rápido que funciona con este ejemplo:
Names Default To Here(1);
str = JSL Quote(dt = New Table("Untitled",
Add Rows(1),
New Column("A", Numeric, "Continuous", Format("Best", 12), Set Values([1])),
New Column(" A", Numeric, "Continuous", Format("Best", 12), Set Values([2]))
));
new_lines = {};
For Each({line}, Words(str, "\!N"),
If(Starts With(Trim Whitespace(line), "New Column("),
// get column name
col_name = Regex(Trim Whitespace(line), "^New Column\(\!"(.+?)\!",\s", "\1");
// add set name
last_idx = Contains(line, ")", -1);
new_line = Left(line, last_idx - 1) || ", << Set Name(\!"" || col_name ||"\!")),";
Insert Into(new_lines, new_line);
,
Insert Into(new_lines, line);
);
);
old_dt = Eval(Parse(str));
new_dt = Eval(Parse(Concat Items(new_lines, "\!N")));
@jthi Gracias. Tenía miedo de que los espacios en blanco iniciales fueran una mala práctica. ¿Alguna lista de este error puede agregarse o informarse?
Además, creo que es más fácil reescribir mi secuencia de comandos para dar diferentes nombres de columna que implementar las soluciones sugeridas por usted. (Etiqueté su respuesta accidentalmente como solución cuando en realidad solo intenté responder). Como siempre, gracias por su invaluable aporte y sus incansables esfuerzos para educar a otros usuarios de JMP. Esto es extremadamente útil.
Por lo general, me he puesto en contacto con el soporte de jmp con errores. Esta publicación debería ser un buen ejemplo de la situación, así que recuerde agregar un enlace a esto.
Definitivamente (en mi opinión) es una buena idea cambiar el nombre de las columnas en lugar de intentar administrar algún tipo de solución extraña. Esos espacios en blanco podrían terminar causando problemas más tarde de todos modos.