Ich versuche, ein Paar von Skripten zu erstellen, das erste würde Spaltennamen und Formeln in einer Liste speichern und das zweite würde diejenigen, die den Namespace verwenden, bringen und sie auf eine andere Datentabelle anwenden. Ich glaube, ich habe das grundlegende Namespace-Konzept behandelt, aber ich habe Probleme, die Eigenschaften anzuwenden. Jede Hilfe wäre sehr dankbar.
Skript 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>
Ausgabe:
{Col1, umn 2, Con 4, Spalte}
{Empty (),: Col1 + 8,: umn 2 * 3}
Skript 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;
Ausgabe:
Col1
umn 2
Con 4
Säule
{Empty (),: Col1 + 8,: umn 2 * 3}
Die zwei Hauptprobleme Die Spaltennamen in der zweiten Datentabelle nehmen die neuen Namen nicht an , und wenn unkommentierte Spalte << Formel bricht. Ich habe viele verschiedene Wege ausprobiert, habe aber noch keinen Erfolg damit, sie zur Arbeit zu bringen.
* Edit - List / Column Size Check zum zweiten Skript hinzugefügt
* Erste Frage gelöst, siehe Antwort unten.
Die Frage jetzt, gibt es eine bestimmte "Typ" -Formel oder Satzformel, die diese Funktion unterstützen soll?
Vielen Dank! Gute JMP-Beispiele sind schwer zu finden. Mir scheint, dass der Skript-Leitfaden die meisten praktischen Beispiele für das, wofür ich es benutze, fehlt. Ich muss einige dieser Funktionen überprüfen, um zu verstehen, wie das funktioniert. Mit dem von Ihnen bereitgestellten Bild ist es jedoch viel einfacher.
Hier ist ein Vorschlag zum Erstellen von Spalten, allen Eigenschaften, Namen, Formeln, aber ohne Werte.
Das angehängte Skript verwendet colref << get script und demonstriert das Skript mit Big Class.jmp
Die Lösung des Namens der Spalte war eine Frage des Typs.
Lösung in Skript 1:
ns:names = dt << Get Column Names("String");// get column names