한 쌍의 스크립트를 만들려고합니다. 첫 번째는 열 이름과 수식을 목록에 저장하고 두 번째는 네임 스페이스 사용을 통해 가져와 다른 데이터 테이블에 적용합니다. 기본 네임 스페이스 개념을 처리했다고 생각하지만 문제가 발생하여 속성이 적용됩니다. 어떤 도움이라도 대단히 감사 할 것입니다.
스크립트 1 :
clear symbols(); //for debug
Names Default to Here(1); //namespace declaration,create variables in local scope only
ns = New Namespace("outer");
dt = Current data table();
if(isEmpty(dt),
try(dt = Open(), Throw("No data table found"))
);
nc = nCol( dt );
ns:names = dt << Get Column Names();// get column names
print(ns:names);
ns:formulaList={};
For( i = 1, i < N Items(ns:names), i++,
col = Column(i);
ns:formulaList[i] = col << get Property( "Formula");
);
print (ns:formulaList);
ns <<LOCK></LOCK>
산출:
{Col1, umn 2, Con 4, Column}
{Empty (), : Col1 + 8, : umn2 * 3}
스크립트 2 :
Clear Symbols(); //for debug
Names Default to Here(1); //namespace declaration,create variables in local scope only
ms=namespace("outer");
dt = Current Data Table();
If( Is Empty( dt ),
Try( dt = Open(), Throw( "No data table found" ) )
);
colSize = N Col( dt );
ListSize = N Items(ms:names);
For( i = 1, i < ListSize + 1, i++,
if(i > colSize, New Column( "temp" ));//create columns to accomidate list size
print(ms:names[i]);
Column(i) << Set NAME(ms:names[i]);//set column names
//col << Formula( Eval(ms:formulaList[i]) );//set column formulas
);
print(ms:formulaList);
//ms << Delete;
산출:
Col1
umn 2
죄수 4
기둥
{Empty (), : Col1 + 8, : umn2 * 3}
두 가지 주요 쟁점, 두 번째 데이터 테이블의 열 이름이 새 이름을 사용하지 않습니다. 주석 처리되지 않은 col << 수식이 중단되면. 여러 가지 방법을 시도했지만 아직 성공하지 못했습니다.
* 편집 - 목록 / 열 크기 확인을 두 번째 스크립트에 추가했습니다.
* 첫 번째 질문을 해결, 아래 답변을 참조하십시오.
이제 문제는 특정 "형식"수식 또는 수식이 작동하도록 할 것입니까?
감사! 좋은 JMP의 예는 찾기 어렵습니다. 나에게 스크립팅 가이드가 무엇을 사용하고 있는지에 대한 실제적인 예가 부족한 것 같다. 이 기능의 일부를 전체적으로 이해하려면이 기능을 확인해야하지만 제공 한 전체 그림을 사용하면 훨씬 쉽습니다.
다음은 열, 모든 속성, 이름, 수식을 만들지 만 값은없는 제안입니다.
첨부 된 스크립트는 colref << get 스크립트를 사용하고 Big Class.jmp를 사용하여 스크립트를 보여줍니다.
열 명명 문제가 "유형"문제였습니다.
스크립트 1의 해결책 :
ns:names = dt << Get Column Names("String");// get column names