Sto cercando di sviluppare un componente aggiuntivo JMP per la prima volta utilizzando il generatore di applicazioni, ma sono rimasto bloccato con lo scripting JSL come descritto di seguito:
Alcuni retroscena:
L'interfaccia è stata creata nella scheda Dialogo.
Sono presenti tre riquadri con i titoli Colonne, Ruoli e Azione e i nomi delle variabili rispettivamente ColumnsPanel, RolesPanel e ActionPanel.
Nel pannello Colonne, ho aggiunto una casella di riepilogo Col (Tutto) con il nome della variabile ColList in cui viene inserita in tutte le colonne nella tabella dati aperta.
Nel pannello Ruoli, ho aggiunto tre caselle di elenco colonne e tre caselle di pulsanti:
i nomi delle variabili per la prima, la seconda e la terza casella di riepilogo Col sono rispettivamente ResponseColList, FactorColList e BlockColList.
i nomi delle variabili per il primo, il secondo e il terzo Button Box sono rispettivamente ResponseButton, FactorButton e BlockButton.
i titoli del primo, secondo e terzo Button Box sono rispettivamente Risposta, Fattore e Blocco.
Sotto il pannello Azione, ho aggiunto tre caselle di pulsanti con i titoli OK, Rimuovi e Annulla e i nomi delle variabili OKButton, RemoveButton e CancelButton, rispettivamente.
Quando faccio clic sul pulsante di risposta, vengono aggiunte le colonne dell'attributo "A", "B", "C", "D" ed "E" da ColList.
Allo stesso modo, quando faccio clic sul pulsante Fattore e blocco, viene aggiunta la colonna "Sito" e "Persone" da ColList.

Script:
//Part I
//Places selected columns into Role panel
On Response = Function({},
ResponseColList << Append( AllColList << Get Selected)
);
//Places selected columns into Factor panel
On Factor = Function({},
FactorColList << Append( AllColList << Get Selected)
);
//Places selected columns into Block panel
On Block = Function({},
BlockColList << Append( AllColList << Get Selected)
);
// Program the OK Button
On OK = Function({},
Response = ResponseColList << Get Items;
Factor = FactorColList << Get Items;
Block = BlockColList << Get Items;
// Get the current data table
dt = Current Data Table();
// Perform principal component analysis
pca = dt << Principal Components(
Y( Eval List( Response ) ),
Estimation Method( "NIPALS" ),
Standardize( "Standardized" )
);
pca << Save Principal Component Values( 3 );
pca << Close Window();
// Create a subset and delete columns "Prin1", "Prin2" and ""Prin3" in "dt"
dt << Subset(
Output Table("MET"),
All rows,
columns(Eval List(Block), Eval List(Factor), :Prin1, :Prin2, :Prin3)
);
dt << Delete Columns( "Prin1" ) << Delete Columns( "Prin2" ) << Delete Columns( "Prin3" );
// Standardize column attributes and create a data table "MET"
Current Data Table(Data Table("MET"));
For Each({col, index}, {:Prin1, :Prin2, :Prin3},
col << Format("Fixed Dec", 12, 2)
);
MET = Data Table( "MET" );
//Part II
//Get the levels in the Factor column
factorLevels = Associative Array(MET, Column(Eval List(Factor))) << Get Keys;
level1 = factorlevels[1];
level2 = factorlevels[2];
// Create two subsets named "Group1" and "Group2"
MET << Select Where( Column(Eval List(Factor)) == level1 ) << Subset( Output Table( "Group1" ), Selected Rows( 1 ), Selected columns only( 0 ) );
MET << Select Where( Column(Eval List(Factor)) == level2 ) << Subset( Output Table( "Group2" ), Selected Rows( 1 ), Selected columns only( 0 ) );
Group1 = Data Table( "Group1" );
Group2 = Data Table( "Group2" );
// Access the Site levels in "Group1" and "Group2"
Site_level1 = Column( Group1, "Site" ) << Get Values;
Site_level2 = Column( Group2 "Site" ) << Get Values;
);Riesco a eseguire correttamente gli script della Parte I, ma continuo a ricevere errori nella Parte II, quindi apprezzo molto l'aiuto nel debug del codice.
Un altro obiettivo qui è gestire set di dati con nomi di attributi diversi (ad esempio, attributo "F", "G", ecc.). Vorrei garantire che lo script utilizzi i nomi delle colonne selezionate in modo dinamico anziché nomi specifici codificati.
Grazie!
Quali parti della Parte 2 non funzionano e vengono visualizzati errori?
L'array associativo - con una tabella dati come primo argomento?
Names Default to Here(1);
MET = Open( "$SAMPLE_DATA/Big Class.jmp" );
Factor={"height", "weight"};
Associative Array(MET, Column(Eval List(Factor)))