Sto provando a creare una coppia di script, il primo salverebbe i nomi delle colonne e le formule in un elenco e il secondo porterebbe quelli attraverso l'uso dello spazio dei nomi e li applicherà a un'altra tabella di dati. Credo di avere il concetto dello spazio dei nomi di base gestito, ma sto avendo problemi ad applicare le proprietà. Qualsiasi aiuto sarebbe molto apprezzato.
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>
Produzione:
{Col1, umn 2, Con 4, Colonna}
{Empty (),: 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;
Produzione:
col1
umn 2
Con 4
Colonna
{Empty (),: Col1 + 8,: umn 2 * 3}
I due problemi principali, i nomi delle colonne nella seconda tabella di dati non assumono i nuovi nomi e, se non commentato, si interrompe la formula. Ho provato molti modi diversi ma non ho ancora avuto successo nel riuscire a lavorare.
* Modifica: aggiunta Lista / Controllo dimensione colonna al secondo script
* Risolto il primo quesito, vedi risposta sotto.
La domanda ora, c'è una specifica "type" Formula o Set Formula si aspetta di abilitarlo a funzionare?
Grazie! Buoni esempi di JMP sono difficili da trovare. A me sembra che la guida allo scripting manchi della maggior parte degli esempi pratici di ciò per cui lo sto usando. Devo controllare alcune di queste funzioni per capire a fondo come funziona, ma è molto più semplice con l'immagine completa che hai fornito.
Ecco una proposta per creare colonne, tutte le proprietà, i nomi, le formule, ma nessun valore.
Lo script allegato utilizza colref << get script e dimostra lo script utilizzando Big Class.jmp
La soluzione del problema di denominazione della colonna era una questione di "tipo" ...
Soluzione in Script 1:
ns:names = dt << Get Column Names("String");// get column names