L'aggiornamento della casella di riepilogo delle colonne utilizzando l'elenco memorizzato nella variabile non funziona come previsto. È così che dovrebbe essere?Sto cercando di correggere i "peccati" precedenti in uno script che ho scritto aggiornandolo con riferimenti unanimi, ovvero in modo che lo script si riferisca all'unica tabella a cui (voglio) dirlo, anche se un'altra tabella potrebbe essere quella corrente ( o una tabella "interferente"). Ho provato a ricostruire il problema qui sotto.
Names Default To Here( 1 );
// this is the table i want to work with
dt = New Table( "Target table", invisible,
Add Rows( 3 ),
New Column( "Name_1",
Character( 1 ),
"Nominal",
Set Values( {"A", "B", "C"} ),
Set Display Width( 45 )
),
New Column( "Name_2",
Character( 1 ),
"Nominal",
Set Values( {"X", "Y", "Z"} ),
Set Display Width( 45 )
),
New Column( "NumericRight",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 2, 3] ),
Set Display Width( 78 )
),
New Column( "NumericAlso",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [7, 8, 9] )
)
);
dt2 = New Table( "Interfering table", invisible,
Add Rows( 3 ),
New Column( "Name_1",
Character( 1 ),
"Nominal",
Set Values( {"D", "E", "F"} ),
Set Display Width( 45 )
),
New Column( "Name_2",
Character( 1 ),
"Nominal",
Set Values( {"U", "V", "W"} ),
Set Display Width( 45 )
),
New Column( "NumericInterference",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [4, 5, 6] )
),
New Column( "MoreNumeric",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [7, 8, 9] )
)
);
// get lists
lstName_1 = Associative Array( dt:Name_1 ) << Get Keys;
lstName_2 = Associative Array( dt:Name_2 ) << Get Keys;
colList = dt << Get Column Names( "Numeric" );
// window with radio buttons & col list box
New Window( "Select values",
Show Menu( 0 ),
Show Toolbars( 0 ),
Border Box( Top( 0 ), Bottom( 20 ), Left( 20 ), Right( 10 ),
H List Box(
Panel Box( "Name_1",
Radio Box(
Eval List( lstName_1 )
)
),
Panel Box( "Name_2",
Radio Box(
Eval List( lstName_2 )
)
),
Panel Box( "Numeric Columns",
clb = Col List Box( )
),
clb << Append( colList ); // making me cry ...
)
)
);
Quello che voglio vedere :

Ciò che vedo invariabilmente se la mia "tabella di destinazione" non è la tabella corrente :

Ciò che mi confonde completamente è che quando cambio il nome di dt2:Interferenza numerica A dt2:NumericRight , ottengo questo risultato :

Perché dt2 non lascia che il mio script faccia il lavoro che voglio che faccia? Perché la modifica del nome di una colonna in dt2 influisce su ciò che entra nella casella di riepilogo delle colonne? Ho provato alcune varianti di spostamento del file colList variabile e ho anche provato a racchiuderlo in Elenco valutazioni() , senza "fortuna".
Cercando ancora nella community ho trovato questo Hai bisogno di aiuto per popolare la casella di riepilogo delle colonne. Se c'è un'altra soluzione, grazie per avermelo fatto sapere. In alternativa, è così che dovrebbe essere e, se sì, qual è il significato?
Automazione e scriptingRi: L'aggiornamento della casella di riepilogo delle colonne utilizzando l'elenco memorizzato nella variabile non funziona come previsto. È così che dovrebbe essere?CIAO,
A prima vista, è sufficiente utilizzare la sintassi seguente per ottenere l'elenco delle colonne numeriche dalla tabella dt:
clb = Col List Box(dt, all, << Set Data Type ("numeric"))
Inoltre, non è chiaro come potrebbe funzionare la riga: "clb << append (collist)" poiché Get Column Names restituisce un elenco di nomi e non di colonne.
Infine, non penso che tu possa utilizzare la casella di riepilogo Col su più tabelle (correggimi se sbaglio qui).
Migliore,
TS
Ri: L'aggiornamento della casella di riepilogo delle colonne utilizzando l'elenco memorizzato nella variabile non funziona come previsto. È così che dovrebbe essere?Sembra che la casella di riepilogo delle colonne accetti semplicemente le colonne dalla tabella dati che era "corrente" quando è stata creata la casella di riepilogo delle colonne.
Se dt2 non contiene la rispettiva colonna, non può essere aggiunta.
Suppongo
current data table(dt);
// window with radio buttons & col list box
New Window( "Select values",
non c'è alcuna opzione per te?
In caso contrario, utilizzare
clb = Col List Box( Data Table(dt) )
per specificare quale tabella dati deve essere utilizzata per la casella di riepilogo colonne:

Ri: L'aggiornamento della casella di riepilogo delle colonne utilizzando l'elenco memorizzato nella variabile non funziona come previsto. È così che dovrebbe essere?Grazie @Thierry_S , lo proverò domani. Tuttavia, se dt2 viene commentato fuori dallo script, la casella di riepilogo Col si aggiorna come previsto, quindi funziona sicuramente (vedi anche il primo screenshot nel mio post originale).
Ri: L'aggiornamento della casella di riepilogo delle colonne utilizzando l'elenco memorizzato nella variabile non funziona come previsto. È così che dovrebbe essere?@hogi grazie, domani provo anche questa e vi faccio sapere il risultato.
Ri: L'aggiornamento della casella di riepilogo delle colonne utilizzando l'elenco memorizzato nella variabile non funziona come previsto. È così che dovrebbe essere?@Thierry_S , stranamente e sfortunatamente, questo non funziona. Nello script che ho inizialmente pubblicato ho apportato le seguenti modifiche in base alla tua proposta:
// this part was revised ...
Panel Box( "Numeric Columns",
clb = Col List Box( )
),
clb << Append( colList ); // making me cry ...
// ... to look like this.
Panel Box( "Numeric Columns",
clb = Col List Box( dt, all, << Set Data Type ( "numeric" ) ) // this adds the numeric columns from dt2. Why???
)
Ciò ha prodotto il risultato seguente, ovvero le colonne numeriche di dt2 sono state aggiunte alla casella di riepilogo delle colonne, mentre ciò che voglio sono le colonne numeriche di dt.

Comunque per me è stato un apprendimento molto utile. Grazie!
Ri: L'aggiornamento della casella di riepilogo delle colonne utilizzando l'elenco memorizzato nella variabile non funziona come previsto. È così che dovrebbe essere?
@Ressel ha scritto:
@Thierry_S , stranamente e sfortunatamente, questo non funziona.</CODE></P><HR /></BLOCKQUOTE><P> </P><P>Il codice è quasi corretto, ma devi usarlo</P><PRE><CODE class=" language-jsl">clb = Col List Box(Data Table(dt), all, << Set Data Type ("numeric"))
puoi anche usare
clb = Col List Box(all, << Set Data Type ("numeric"), Data Table(dt))ma non dovresti dimenticare l '"indicatore" *) Data Table().
Come indicato nel mio post precedente (sotto), secondo la guida allo scripting, deve esserlo

Come con i nomi delle colonne, non importa se usi il nome o il riferimento.
Ma deve essere Data Table (nome o riferimento alla tabella) e non solo l'argomento senza indicatore.
Questo è un po' fuorviante, perché spesso la tabella dati(nome) può essere sostituita con un riferimento alla tabella dati 
Ma qui la tabella dati è un argomento facoltativo e quindi deve esserci un indicatore *) tale che Jmp sappia di cosa si tratta.
*) Qual è il nome ufficiale di "indicatore"?
Ri: L'aggiornamento della casella di riepilogo delle colonne utilizzando l'elenco memorizzato nella variabile non funziona come previsto. È così che dovrebbe essere?@hogi , Sono stupito! Grazie per l'aiuto.
- Ovviamente, trasformare la tabella desiderata nella tabella corrente funziona. In qualche modo, volevo comunque evitarlo.
- Ma funziona anche il codice seguente
Panel Box( "Numeric Columns",
clb = Col List Box(Data Table( dt ))
),
clb << Append( colList ); // this is still required, which I find interesting, since I thought the clb was already added above via Col List Box(...)
Al contrario, quanto riportato di seguito non funziona. Piuttosto, aggiunge le colonne numeriche di dt2, il che per me non ha senso.
Panel Box( "Numeric Columns",
clb = Col List Box(dt, all, << Set Data Type ( "numeric" )) // adds numeric columns from dt2 :(...
),
/*clb << Append( colList );*/ // doesn't matter whether this is commented out or not
Ri: L'aggiornamento della casella di riepilogo delle colonne utilizzando l'elenco memorizzato nella variabile non funziona come previsto. È così che dovrebbe essere?CIAO @Ressel .
Devo ammettere che la cosa ha lasciato un po' perplesso anche me 
Avrebbero dovuto usare
Col List Box(<FROM data="https://community.jmp.com/" table=""></FROM>
come argomento facoltativo ... o qualsiasi altra cosa, ma diversa da Tabella dati ("nome tabella")
- un po' fuorviante, vero?
Dopo anni come utente Jmp, si è troppo tentati di sostituire l'intera espressione con dt - e quindi dimenticare l '"indicatore".
D'altra parte, è bello poter utilizzare il riferimento alla tabella invece del nome della tabella come argomento di Data Table 
Ri: L'aggiornamento della casella di riepilogo delle colonne utilizzando l'elenco memorizzato nella variabile non funziona come previsto. È così che dovrebbe essere?La presenza e l'aiuto di utenti come te è ciò che solleva molte persone, me compreso, quando si tratta di scripting e altre competenze relative a JMP. Questa è gentilezza e questo è molto apprezzato.
Ri: L'aggiornamento della casella di riepilogo delle colonne utilizzando l'elenco memorizzato nella variabile non funziona come previsto. È così che dovrebbe essere?@Thierry_S , @hogi per tua informazione - https://www.pega-analytics.co.uk/blog/handling-lists-of-columns/
Ri: L'aggiornamento della casella di riepilogo delle colonne utilizzando l'elenco memorizzato nella variabile non funziona come previsto. È così che dovrebbe essere?Grazie per il link, @David_Burnham il blog contiene una bella collezione di gemme!
Ho appena letto la parte sui riferimenti alle colonne nella piattaforma di distribuzione.
Interessante: secondo l'indice degli script è:

Poiché non esistono" < >" attorno all'argomento Column(), si potrebbe pensare questo Colonna() è l'unico argomento non facoltativo
- usa il Colonna() funzione per generare un riferimento di colonna?
Ma in realtà è lo stesso di Tabella dati() nella discussione precedente:
Colonna() è un indicatore per un opzionale discussione:
- può essere posizionato ovunque e può essere omesso
- accetta una colonna o un elenco di >=1 colonne (come riferimento o nome) - chiaro segno che questa NON è la funzione column()
Ho trovato un'altra voce nell'indice degli script in cui i punti prima e dopo l'argomento Columns() indicano che l'argomento è facoltativo.
Qui è Colonne [plurale], come nella GUI. Y è un altro alias. Entrambi aiutano a non farsi distrarre dalla funzione Colonna() .

// aliasDistribution(Column("height"));
Distribution(:height); // doesn't work<BR /><BR />Distribution(Columns("name", :sex)); // accepts >=1 arguments; column references and names<BR />Distribution(Columns({"name", :sex})); // accepts lists
<BR />Distribution(Continuous Distribution(Column( :height ))); // Distribution can be used without a Column() argument<BR />
Distribution("dummy 1st entry", Columns("height")); // Column at non-first position -> works<BR /><BR />Distribution("hello"); // not necessary to provide a meaningful (first) argument<BR /><BR />Distribution(Columns("name")); // alias<BR />Distribution(Y("name"));
Ri: L'aggiornamento della casella di riepilogo delle colonne utilizzando l'elenco memorizzato nella variabile non funziona come previsto. È così che dovrebbe essere?La Guida allo scripting fornisce alcune spiegazioni sulla terminologia Guida allo scripting > Introduzione alla scrittura di script JSL > Terminologia JSL
Ri: L'aggiornamento della casella di riepilogo delle colonne utilizzando l'elenco memorizzato nella variabile non funziona come previsto. È così che dovrebbe essere?
Quindi la terminologia è di nome argomenti
- e gli argomenti con nome sono sempre facoltativi - con e senza < > nell'indice degli script 
Sfortunatamente, non esplicitamente indicato:
allora il nome ufficiale dell'"indicatore" di un argomento denominato è " nome "?
Ri: L'aggiornamento della casella di riepilogo delle colonne utilizzando l'elenco memorizzato nella variabile non funziona come previsto. È così che dovrebbe essere?Nome ufficiale? Indicatore?
Guida di scripting > Blocchi predefiniti JSL > Regole di sintassi JSL > Regole JSL per i nomi
In JSL, un nome è semplicemente qualcosa con cui chiamare un elemento. Quando si assegna il valore numerico 3 a una variabile nell'espressione un = 3 , UN è un nome.
Ri: L'aggiornamento della casella di riepilogo delle colonne utilizzando l'elenco memorizzato nella variabile non funziona come previsto. È così che dovrebbe essere?Questo è ciò che mi lascia perplesso.
Abbiamo appreso che il Colonne("altezza") In
Distribution(Columns("height"));è un (facoltativo) argomento denominato.
Allora, cos'è Colonne In Distribuzione(Colonne("altezza")); ?
Dal punto di vista grammaticale potrebbe essere il "nome" dato all'argomento denominato.
Ma questo entrerà in collisione con la definizione standard di nome nel JSL. (confrontare: come nome(x))
Immagino di non essere il primo a porre questa domanda e immagino che esista un nome ufficiale per il nome di un parametro con nome.
Ma non ho avuto la fortuna di trovarlo nella documentazione.
@Mark_Bailey ?