J'essaie de développer un complément JMP pour la première fois à l'aide du générateur d'applications, mais je suis resté bloqué avec le script JSL comme décrit ci-dessous :
Un peu de contexte :
L'interface a été construite sous l'onglet Dialogue.
Il existe trois zones de panneau avec les titres Columns, Roles et Action, ainsi que les noms de variables ColumnsPanel, RolesPanel et ActionPanel, respectivement.
Sous le panneau Colonnes, j'ai ajouté une zone de liste Col (Toutes) avec le nom de variable ColList où elle extrait toutes les colonnes de la table de données ouverte.
Sous le panneau Rôles, j'ai ajouté trois zones de liste de colonnes et trois zones de boutons :
les noms de variables pour la première, la deuxième et la troisième zone de liste Col sont respectivement ResponseColList, FactorColList et BlockColList.
les noms de variables pour la première, la deuxième et la troisième Button Box sont respectivement ResponseButton, FactorButton et BlockButton.
les titres des première, deuxième et troisième Button Box sont respectivement Réponse, Facteur et Bloc.
Sous le panneau Action, j'ai ajouté trois boîtes de boutons avec les titres OK, Remove et Cancel, ainsi que les noms de variables OKButton, RemoveButton et CancelButton, respectivement.
Lorsque je clique sur le bouton de réponse, les colonnes d'attribut "A", "B", "C", "D" et "E" de ColList sont ajoutées.
De même, lorsque je clique sur les boutons Facteur et Bloquer, la colonne « Site » et « Personnes » de ColList est ajoutée.

Scénarios :
//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;
);Je peux exécuter avec succès les scripts de la partie I, mais je continue à recevoir des erreurs dans la partie II, j'apprécie donc vraiment de l'aide pour déboguer le code.
Un autre objectif ici est de gérer des ensembles de données avec différents noms d'attributs (par exemple, l'attribut "F", "G", etc.). Je voudrais m'assurer que le script utilise les noms de colonnes sélectionnés de manière dynamique plutôt que de coder en dur des noms spécifiques.
Merci!
Quelles parties de la partie 2 échouent et quelles erreurs obtenez-vous ?
Le tableau associatif - avec une table de données comme premier argument ?
Names Default to Here(1);
MET = Open( "$SAMPLE_DATA/Big Class.jmp" );
Factor={"height", "weight"};
Associative Array(MET, Column(Eval List(Factor)))