Estoy tratando de crear un par de scripts, el primero guardaría los nombres de las columnas y las fórmulas en una lista y el segundo los pondría en uso del espacio de nombres y los aplicaría a otra tabla de datos. Creo que tengo el concepto básico de espacio de nombres manejado, pero tengo problemas para aplicar las propiedades. Cualquier ayuda sería muy apreciada.
Guión 1:
clear symbols(); //for debug
Names Default to Here(1); //namespace declaration,create variables in local scope only
ns = New Namespace("outer");
dt = Current data table();
if(isEmpty(dt),
try(dt = Open(), Throw("No data table found"))
);
nc = nCol( dt );
ns:names = dt << Get Column Names();// get column names
print(ns:names);
ns:formulaList={};
For( i = 1, i < N Items(ns:names), i++,
col = Column(i);
ns:formulaList[i] = col << get Property( "Formula");
);
print (ns:formulaList);
ns <<LOCK></LOCK>
Salida:
{Col1, umn 2, Con 4, Column}
{Vacío (),: Col1 + 8,: umn 2 * 3}
Script 2:
Clear Symbols(); //for debug
Names Default to Here(1); //namespace declaration,create variables in local scope only
ms=namespace("outer");
dt = Current Data Table();
If( Is Empty( dt ),
Try( dt = Open(), Throw( "No data table found" ) )
);
colSize = N Col( dt );
ListSize = N Items(ms:names);
For( i = 1, i < ListSize + 1, i++,
if(i > colSize, New Column( "temp" ));//create columns to accomidate list size
print(ms:names[i]);
Column(i) << Set NAME(ms:names[i]);//set column names
//col << Formula( Eval(ms:formulaList[i]) );//set column formulas
);
print(ms:formulaList);
//ms << Delete;
Salida:
Col1
umn 2
Con 4
Columna
{Vacío (),: Col1 + 8,: umn 2 * 3}
Los dos temas principales, Los nombres de columna en la segunda tabla de datos no toman los nuevos nombres , y si no comenta col << Formula se rompe. Han intentado de muchas maneras diferentes, pero aún no han tenido éxito en conseguir que funcionen.
* Editar- añadido el tamaño de la lista / columna a la segunda secuencia de comandos
* Resuelto primera pregunta, ver respuesta abajo.
La pregunta ahora, ¿hay una Fórmula de "tipo" o Conjunto de Fórmula específica que espere que funcione?
¡Gracias! Los buenos ejemplos de JMP son difíciles de encontrar. Me parece que la guía de scripting carece de la mayoría de los ejemplos prácticos para los que estoy usando. Tengo que verificar algunas de esas funciones para entender por completo cómo funciona esto, pero es mucho más fácil con la imagen completa que proporcionó.
Aquí hay una propuesta para crear columnas, todas las propiedades, nombres, fórmulas, pero sin valores.
El script adjunto usa colref << get script, y muestra el script usando Big Class.jmp
La solución al problema de los nombres de columnas era una cuestión de "tipo" ...
Solución en Script 1:
ns:names = dt << Get Column Names("String");// get column names