J'essaie de créer une paire de scripts, le premier enregistre les noms de colonnes et les formules dans une liste et le second les amène à l'utilisation de l'espace de noms et les applique à une autre table de données. Je crois que le concept de base d’espace de noms a été traité, mais des problèmes surviennent lors de l’application des propriétés. Toute aide serait très appréciée.
Script 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>
Sortie:
{Col1, umn 2, Con 4, Column}
{Vide (),: 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;
Sortie:
Col1
umn 2
Con 4
Colonne
{Vide (),: Col1 + 8,: umn 2 * 3}
Les deux problèmes principaux les noms de colonne dans la deuxième table de données ne prennent pas les nouveaux noms , et si col non commenté << Formule rompt. J'ai essayé de nombreuses façons différentes, mais je n'ai pas encore réussi à faire fonctionner l'un ou l'autre.
* Édition - vérification de la taille de la liste / colonne ajoutée au deuxième script
* Résolution de la première question, voir la réponse ci-dessous.
La question maintenant, existe-t-il un "type" de formule ou de formule défini qui devrait permettre à cette formule de fonctionner?
Merci! Les bons exemples JMP sont difficiles à trouver. Il me semble que le guide de script manque de la plupart des exemples pratiques de son utilisation. Je dois vérifier certaines de ces fonctions pour bien comprendre comment cela fonctionne, mais le tableau complet que vous avez fourni est beaucoup plus simple.
Voici une proposition pour créer des colonnes, toutes les propriétés, noms, formules, mais pas de valeurs.
Le script attaché utilise colref << get script et montre le script en utilisant Big Class.jmp
La solution au problème de nommage des colonnes était une question de "type" ...
Solution dans le script 1:
ns:names = dt << Get Column Names("String");// get column names