JMP 17.2 > 사용자 지정 보고서 > 문자열 열 상자 > 긴 목록을 여러 열로 분배하려면 어떻게 해야 하나요?안녕하세요 JMP 커뮤니티 여러분,
아래 참조) 사용자 지정 보고서를 실험하고 있는데, 다양한 길이의 목록을 String Col Box() 함수의 여러 열에 분산하고 싶습니다. 예를 들어, 스크립트에 표시된 목록의 경우, 각 항목을 17줄씩 4열로 분산하고 싶습니다.
단순화된 스크립트(필수적인 대사 외에는 모든 내용을 삭제했습니다):
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)))
)
);
감사합니다.
안녕하세요,
티에스
자동화 및 스크립팅결과 공유 및 전달윈도우Re: JMP 17.2 > 사용자 지정 보고서 > 문자열 열 상자 > 긴 목록을 여러 열로 분배하려면 어떻게 해야 하나요?원하는 작업을 수행하는 한 가지 방법은 다음과 같습니다. 최종 코드에 루프 논리를 구현할 것이라는 가정 하에 코드를 개별 하드코딩된 문장으로 나누었습니다.

theList=rep_w[stringcolbox(1)]<
<GET></GET>
Re: JMP 17.2 > 사용자 지정 보고서 > 문자열 열 상자 > 긴 목록을 여러 열로 분배하려면 어떻게 해야 하나요?안녕하세요, txnelson님.
피드백 감사합니다. 이 답변은 문자열 열 상자의 입력을 테이블로 파싱하는 방법을 제시합니다. 사실 저는 다른 것을 찾고 있습니다. 문자열 열 상자 구조 내에서 목록을 여러 열로 파싱하는 방법을 알고 싶습니다.
최상의,
티에스
Re: JMP 17.2 > 사용자 지정 보고서 > 문자열 열 상자 > 긴 목록을 여러 열로 분배하려면 어떻게 해야 하나요?이게 당신이 원하는 것인가요?

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>
Re: JMP 17.2 > 사용자 지정 보고서 > 문자열 열 상자 > 긴 목록을 여러 열로 분배하려면 어떻게 해야 하나요?@티에리_S
JSL로 구현하는 일반적인 방법은 다음과 같습니다. 원본 목록과 정수를 필요로 하는 함수를 만들었습니다. 이 함수는 원본 목록을 n개의 작은 목록으로 나누고 목록의 목록을 반환합니다. 원본 목록의 항목 수가 n으로 나누어 떨어지지 않는 경우, n번째 열에 나머지 항목이 저장됩니다. 이렇게 하면 열이 많거나 적은 테이블에 다시 사용할 수 있으므로 함수가 일반화됩니다.
그런 다음 각 목록을 문자열 col 상자로 테이블 상자에 추가하여 테이블을 만듭니다.
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

Re: JMP 17.2 > 사용자 지정 보고서 > 문자열 열 상자 > 긴 목록을 여러 열로 분배하려면 어떻게 해야 하나요?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:
삽입 위치: Flatten(0|1)