식을 "평가"할 수 없습니다.모두 안녕
다시한번 대본 고민중..
이것은 표현을 만듭니다. 괜찮아 보인다.
로그 파일에서 스크립트 창으로 다시 복사하여 붙여넣을 수도 있으며 그렇게 하면 예상 출력으로 올바르게 실행됩니다.
그러나 나는 Eval(), Eval Expr(), Eval(Eval Expr()), Eval(Parse())... 다른 것보다 희망이 훨씬 적은 마지막 것을 시도했지만 결론은 ... 나는 그것을 작동시킬 수 없습니다!
Names Default To Here( 1 );
ParamsList = {
{"P1", "Parameter 1"},
{"P2", "Parameter 2"}
};
analysis = Expr(Analysis Column());
For (i=1, i<= Length(ParamsList), i++,
Insert Into(
analysis,
Substitute(
Expr(Transform Column("__Desc__", Formula(__Parameter__))),
"__Desc__", ParamsList[i][2]||" Median",
Expr(__Parameter__), Parse(":"||ParamsList[i][1]||"_Q50")
)
);
);
addRowExpr = Expr(Row Table());
Insert Into(addRowExpr, Eval Expr(analysis));
Insert Into(addRowExpr, Expr(Statistics(Median)));
addTabExpr = Expr(Add Table(Column Table(Grouping Columns(:Source))));
Insert Into(addTabExpr, Eval Expr(addRowExpr));
tabExpr = Expr(Tabulate(Set Format(Uniform Format(10,2))));
Insert Into(tabExpr, Eval Expr(addTabExpr));
show(tabExpr);
dtParams = Eval(Eval Expr(tabExpr));시도할 수 있는 "Test.jmp" 파일을 첨부합니다.
"show" 명령의 출력은 다음과 같습니다.
tabExpr = Tabulate(Set Format(Uniform Format(10, 2)), Add Table(Column Table(Grouping Columns(:Source)), Row Table(Analysis Column(Transform Column("Parameter 1 Median", Formula(:P1_Q50)), Transform Column("Parameter 2 Median", Formula(:P2_Q50))), Statistics(Median))));그리고 말했듯이: 해당 출력을 실행하기 위해 스크립트 창에 다시 복사하여 붙여넣으면 원하는 것을 얻을 수 있습니다!
그렇다면 그 표현을 어떻게 "평가"합니까?
감사!
Re: 표현식을 "평가"할 수 없습니다.안녕 짐,
귀하의 솔루션은 실제로 작동합니다! 매우 감사합니다.
지원팀에 연락하고 있습니다.Re: 표현식을 "평가"할 수 없습니다.내 "모닝 브레인"을 사용하여 다음을 생각해 냈습니다.
eval(parse(char(evalexpr(tabexpr))))
그러면 작성된 표현식을 실행할 수 있습니다.
Ian의 의견에 동의합니다. 코드는 개발된 대로 작동해야 하며 다음 주소에 문제를 게시할 것을 제안합니다.
support@jmp.com
Re: 표현식을 "평가"할 수 없습니다.이것은 정말 이상하며 코드를 한 곳에 두는 것 외에는 많이 추가하지 않았습니다. 가상 열 사용과 관련이 있는 것으로 의심되지만 추가 조사가 필요합니다.
Names Default To Here( 1 );
ClearLog();
dt = New Table( "Test",
Add Rows( 5 ),
New Column( "P1_Q50",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [32.6, 54.8, 48.9, 28, 51.4] )
),
New Column( "P2_Q50",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [9, 7, 8, 6, 12] )
),
New Column( "Source",
Character( 1 ),
"Nominal",
Set Values( {"A", "B", "B", "A", "B"} )
)
);
ParamsList = {
{"P1", "Parameter 1"},
{"P2", "Parameter 2"}
};
analysis = Expr(Analysis Column());
For (i=1, i<= Length(ParamsList), i++,
Insert Into(
analysis,
Substitute(
Expr(Transform Column("__Desc__", Formula(__Parameter__))),
"__Desc__", ParamsList[i][2]||" Median",
Expr(__Parameter__), Parse(":"||ParamsList[i][1]||"_Q50")
)
);
);
addRowExpr = Expr(Row Table());
Insert Into(addRowExpr, Eval Expr(analysis));
Insert Into(addRowExpr, Expr(Statistics(Median)));
addTabExpr = Expr(Add Table(Column Table(Grouping Columns(:Source))));
Insert Into(addTabExpr, Eval Expr(addRowExpr));
tabExpr = Expr(Tabulate(Set Format(Uniform Format(10,2))));
Insert Into(tabExpr, Eval Expr(addTabExpr));
show(tabExpr);
NewWindow("tabExpr", tabExpr);
NewWindow("Eval(Parse(Char(NameExpr(tabExpr))))", Eval(Parse(Char(NameExpr(tabExpr)))));Re: 표현식을 "평가"할 수 없습니다.코드가 공개 코드에서 완전히 실행 가능한 것처럼 보이지 않는 것은 확실히 이상합니다. 내가 할 수 있었던 유일한 방법은 expresion tabExpr을 리터럴 문자열로 변환하고 Eval(Parse().
eval(parse("Tabulate(
Set Format( Uniform Format( 10, 2 ) ),
Add Table(
Column Table( Grouping Columns( :Source ) ),
Row Table(
Analysis Column(
Transform Column(\!"Parameter 1 Median\!", Ordinal, Formula( :P1_Q50 ) ),
Transform Column(\!"Parameter 2 Median\!", Ordinal, Formula( :P2_Q50 ) )
),
Statistics( Median )
)
)
);"))
다른 커뮤니티 구성원 중 한 명이 아이디어를 가지고 있을 수 있습니다.
Re: 표현식을 "평가"할 수 없습니다.아!
문제를 이해하고 있으며 변경 사항을 저장하기 전에 Test.jmp를 업로드했습니다.
다음은 올바른 버전입니다.
예상 출력(show()의 결과를 로그에 복사하여)

이와 같은 스크립트를 사용하는 이유는 다음과 같습니다.
-실제 애플리케이션의 매개변수 목록이 훨씬 더 깁니다.
- 파라미터는 내 입력 데이터에 따라 변경되지만 항상 문서화됩니다.
Re: 표현식을 "평가"할 수 없습니다.예상되는 결과는 무엇입니까? 많은 것들이 생성되고 목록에 배치되는 것을 보지만 그런 것들로 수행되는 작업은 보이지 않습니다.
Re: 표현식을 "평가"할 수 없습니다.안녕 저스틴,
여기서는 작동하지 않습니다. 도움이 된다면 저는 JMP 12.1을 사용하고 있습니다.
그것이하는 일은 표를 만드는 것이지만 내용을 채우지는 않습니다. A 열과 B 열이 있습니다.
단일 행과 A와 B의 개수가 있습니다.Re: 표현식을 "평가"할 수 없습니다."tabExpr"을 실행하기만 하면 표현식이 평가됩니다.
tabulateObject = tabExpr;