JMP 17.2 > BENUTZERDEFINIERTER BERICHT > STRING COL BOX > Wie verteile ich eine lange Liste auf mehrere Spalten?Hallo JMP-Community,
Ich experimentiere mit einem benutzerdefinierten Bericht (siehe unten), für den ich Listen unterschiedlicher Länge in einer String Col Box() auf mehrere Spalten verteilen möchte. Für die im Skript angezeigte Liste möchte ich beispielsweise ihre Elemente auf 4 Spalten mit je 17 Zeilen verteilen.
Das vereinfachte Skript (ich habe alles außer den wesentlichen Zeilen entfernt):
Names Default to Here (1);
datastring = { "ASPM", "AURKA", "AURKB", "BIRC5", "BUB1", "BUB1B", "CCNB1", "CCNB2", "CCNE2", "CDC20", "CDC6", "CDCA2", "CDCA5", "CDCA8", "CDK1", "CDT1",
"CENPE", "CENPF", "CENPK", "CENPN", "CENPS", "CENPW", "DIAPH3", "DLGAP5", "ECT2", "ESCO2", "FAM83D", "HJURP", "KIF11", "KIF14", "KIF15", "KIF18A",
"KIF18B", "KIF23", "KIF2C", "KIF4A", "KIFC1", "KNL1", "MAD2L1", "MKI67", "NCAPG", "NCAPH", "NDC80", "NEK2", "NUF2", "NUSAP1", "OIP5", "PLK1", "PRC1", "PSRC1",
"PTTG1", "RACGAP1", "SGO1", "SGO2", "SKA1", "SKA3", "SPAG5", "SPC24", "SPC25", "TACC3", "TOP2A", "TPX2", "TRIP13", "TTK", "UBE2C", "UHRF1", "ZWILCH", "ZWINT"};
// The length of the list varies from 4 to 125 items, depending on the specific report
rep_w = New Window ("REPORT TEST",
mainframe = HList Box("DATA",
text_data = TableBox (Col Span Box ("MEMBERS", String Col Box ("Genes", datastring)))
)
);
Danke schön.
Beste grüße,
TS
Automatisierung und SkriptingErgebnisse teilen und kommunizierenWindowsBetreff: JMP 17.2 > BENUTZERDEFINIERTER BERICHT > STRING COL BOX > Wie verteile ich eine lange Liste auf mehrere Spalten?Hier ist eine Möglichkeit, das Gewünschte zu erreichen. Ich habe den Code in einzelne fest codierte Anweisungen aufgeteilt, da ich davon ausgehe, dass Sie eine Schleifenlogik in den endgültigen Code einbauen möchten.

theList=rep_w[stringcolbox(1)]<
<GET></GET>
Betreff: JMP 17.2 > BENUTZERDEFINIERTER BERICHT > STRING COL BOX > Wie verteile ich eine lange Liste auf mehrere Spalten?Hallo txnelson,
Vielen Dank für Ihr Feedback. Dies bietet eine Lösung zum Parsen von Eingaben aus einer String-Col-Box in eine Tabelle. Ich suche eigentlich nach etwas anderem: Wie kann ich eine Liste in mehrere Spalten innerhalb einer String-Col-Bax-Struktur parsen?
Am besten,
TS
Betreff: JMP 17.2 > BENUTZERDEFINIERTER BERICHT > STRING COL BOX > Wie verteile ich eine lange Liste auf mehrere Spalten?Ist es das, was du willst

Names Default to Here (1);
datastring = { "ASPM", "AURKA", "AURKB", "BIRC5", "BUB1", "BUB1B", "CCNB1", "CCNB2", "CCNE2", "CDC20", "CDC6", "CDCA2", "CDCA5", "CDCA8", "CDK1", "CDT1",
"CENPE", "CENPF", "CENPK", "CENPN", "CENPS", "CENPW", "DIAPH3", "DLGAP5", "ECT2", "ESCO2", "FAM83D", "HJURP", "KIF11", "KIF14", "KIF15", "KIF18A",
"KIF18B", "KIF23", "KIF2C", "KIF4A", "KIFC1", "KNL1", "MAD2L1", "MKI67", "NCAPG", "NCAPH", "NDC80", "NEK2", "NUF2", "NUSAP1", "OIP5", "PLK1", "PRC1", "PSRC1",
"PTTG1", "RACGAP1", "SGO1", "SGO2", "SKA1", "SKA3", "SPAG5", "SPC24", "SPC25", "TACC3", "TOP2A", "TPX2", "TRIP13", "TTK", "UBE2C", "UHRF1", "ZWILCH", "ZWINT"};
// The length of the list varies from 4 to 125 items, depending on the specific report
rep_w = New Window ("REPORT TEST",
mainframe = HList Box("DATA",
text_data = TableBox (Col Span Box ("MEMBERS"))
)
);
text_data<
<APPEND></APPEND>
Betreff: JMP 17.2 > BENUTZERDEFINIERTER BERICHT > STRING COL BOX > Wie verteile ich eine lange Liste auf mehrere Spalten?@Thierry_S
Hier ist eine allgemeine Methode, dies in JSL zu tun. Ich habe eine Funktion erstellt, die eine Originalliste und eine Ganzzahl benötigt. Die Funktion teilt die Originalliste in n kleinere Listen auf und gibt die Liste der Listen zurück. Falls die Anzahl der Elemente in der Originalliste nicht gleichmäßig durch n teilbar ist, enthält die n-te Spalte den Rest der Elemente. Dadurch bleibt die Funktion allgemein, falls Sie sie für eine Tabelle mit mehr oder weniger Spalten erneut verwenden möchten.
Die Tabelle wird dann erstellt, indem jede Liste als Zeichenfolgen-Spaltenfeld an ein Tabellenfeld angehängt wird:
Names Default to Here (1);
splitList_fxn = function( {list, n},
// split a list into into n evenly divided lists and return a list of lists
// if list items/n is not an integer, place the extra items in the nth column
{i,j,k,n,lists,thisList,listSize,items},
lists = {};
items = n items( list );
listSize = round( items/n );
k = 0; // counter
for( i = 1, i <= n, i++,
thisList = {};
if( i != n,
// all but the last list
for( j = (k*listSize)+1, j <= listSize*i, j++,
insert into( thisList, list[j] )
),
// last list will be the remaining items in case there is a remainder
for( j = (k*listSize)+1, j <= items, j++,
insert into( thisList, list[j] )
)
);
k++;
insert into( lists, eval list( list( thisList ) ) )
);
return( lists )
);
// number of columns
n = 4;
// original list
datastring = { "ASPM", "AURKA", "AURKB", "BIRC5", "BUB1", "BUB1B", "CCNB1", "CCNB2", "CCNE2", "CDC20", "CDC6", "CDCA2", "CDCA5", "CDCA8", "CDK1", "CDT1",
"CENPE", "CENPF", "CENPK", "CENPN", "CENPS", "CENPW", "DIAPH3", "DLGAP5", "ECT2", "ESCO2", "FAM83D", "HJURP", "KIF11", "KIF14", "KIF15", "KIF18A",
"KIF18B", "KIF23", "KIF2C", "KIF4A", "KIFC1", "KNL1", "MAD2L1", "MKI67", "NCAPG", "NCAPH", "NDC80", "NEK2", "NUF2", "NUSAP1", "OIP5", "PLK1", "PRC1", "PSRC1",
"PTTG1", "RACGAP1", "SGO1", "SGO2", "SKA1", "SKA3", "SPAG5", "SPC24", "SPC25", "TACC3", "TOP2A", "TPX2", "TRIP13", "TTK", "UBE2C", "UHRF1", "ZWILCH", "ZWINT"};
// The length of the list varies from 4 to 125 items, depending on the specific report
// split the original list into n lists of equal size
col_lists = splitList_fxn( datastring, n );
// create table box and append string col boxes with each list
table = tablebox();
for each( {list,index}, col_lists,
table << append( string col box( "Col " || char(index), list ) )
);
// create report window
rep_w = new window( "REPORT TEST",
mainframe = HList Box("DATA",
table
)
);
n = 4

n = 8

Betreff: JMP 17.2 > BENUTZERDEFINIERTER BERICHT > STRING COL BOX > Wie verteile ich eine lange Liste auf mehrere Spalten?splitList_fxn = function( {list, n},
{default local},
lists = {};
Nparts =ceiling(nitems(list)/n);
i=0;
while(nitems(list),
i++;
chunk = remove from (list, 1,Nparts);
Insert Into(lists, eval list({chunk}));
);
if(i
<N></N>
<P><BR /><CODE class=" language-jsl">Insert Into(lists, eval list({chunk})); ?
It's need till:
Einfügen in: Flatten(0|1)