Re: 如何用占位符替换函数中的内容?查看表达式——您需要使用表达式来执行此操作。这是一个适合您的示例:
//Define variables for X, X1, X2, Y, Y1, Y2, and Group X
vars = {X(colX[i]), X(colX1[i], Position( 1 )), X(colX2[i], Position( 1 ))
,
Y(colY[i]), Y(colY1[i], Position( 1 )), Y(colY2[i], Position( 1 ))
};
If( Is Missing(colGroupX[i]) != 1,
vars = Insert Into( vars, Group X( colGroupX[i] ) )
);
vars = Substitute( vars, {}, Expr( Variables() ) );
Eval( Eval Expr(
GB = Current Data Table() << Graph Builder(
Size( 1413, 999 ),
Expr( Name Expr( vars ) ),
Elements(
Points( X( 1 ), X( 2 ), X( 3 ), Y( 1 ), Y( 2 ), Legend( 11 ) ),
Smoother( X( 1 ), X( 2 ), Y( 3 ), Y( 1 ), Y( 2 ), Legend( 14 ) )
),
SendToReport(
Dispatch( {}, "Graph", ScaleBox,
{Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )}
)
)
)
) )Re: 如何用占位符替换函数中的内容?感谢您的回复,使用您发送的内容,我尝试创建一个我自己的版本,如果它不为空,它将添加到 vars 中
If( Is Missing(colGroupX[i]) != 1, Insert Into( vars, Group X(colGroupX[i]))); vars = {};
If( Is Missing(colX[i]) != 1, Insert Into( vars, X(colX[i])));
If( Is Missing(colX1[i]) != 1, Insert Into( vars, X(colX1[i], Position( 1 ))));
If( Is Missing(colX2[i]) != 1, Insert Into( vars, X(colX2[i], Position( 1 ))));
If( Is Missing(colX3[i]) != 1, Insert Into( vars, X(colX3[i], Position( 1 ))));
If( Is Missing(colX4[i]) != 1, Insert Into( vars, X(colX4[i], Position( 1 ))));
If( Is Missing(colY[i]) != 1, Insert Into( vars, Y(colY[i])));
If( Is Missing(colY1[i]) != 1, Insert Into( vars, Y(colY1[i], Position( 1 ))));
If( Is Missing(colY2[i]) != 1, Insert Into( vars, Y(colY2[i], Position( 1 ))));
If( Is Missing(colY3[i]) != 1, Insert Into( vars, Y(colY3[i], Position( 1 ))));
If( Is Missing(colY4[i]) != 1, Insert Into( vars, Y(colY4[i], Position( 1 )))); <BR />
当我运行它时,它会出错
名称未解析:X 在访问或评估 'X' 时,X( colX[i] ) /*###*/
但是,如果我在下面的 vars 语句中包含它,它就可以工作
vars = {X(colX[i]), X(colX1[i], Position( 1 )), X(colX2[i], Position( 1 ))
,
Y(colY[i]), Y(colY1[i], Position( 1 )), Y(colY2[i], Position( 1 ))
};
请指教谢谢!
Re: 如何用占位符替换函数中的内容?您需要将表达式插入列表中。有了原型插入(变量,值,位置) ,JMP 将仅对以下项执行名称查找变量(不会尝试评估名称查找返回的任何内容),将执行名称查找并评估价值,并将执行名称查找和评估位置.您想要在列表中插入一个表达式——因此您不希望 JMP 计算您放入价值位置。然而,JMP _always_ 对其求值,因此即使 JMP 对其求值也要保留表达式,将其包装在表达式()函数,像这样:
vars = {};
If( Is Missing(colX[i]) != 1, Insert Into( vars, Expr( X(colX[i]) )));
If( Is Missing(colX1[i]) != 1, Insert Into( vars, Expr( X(colX1[i], Position( 1 )) )));
If( Is Missing(colX2[i]) != 1, Insert Into( vars, Expr( X(colX2[i], Position( 1 )) )));
If( Is Missing(colX3[i]) != 1, Insert Into( vars, Expr( X(colX3[i], Position( 1 )) )));
If( Is Missing(colX4[i]) != 1, Insert Into( vars, Expr( X(colX4[i], Position( 1 )) )));
If( Is Missing(colY[i]) != 1, Insert Into( vars, Expr( Y(colY[i]) )));
If( Is Missing(colY1[i]) != 1, Insert Into( vars, Expr( Y(colY1[i], Position( 1 )) )));
If( Is Missing(colY2[i]) != 1, Insert Into( vars, Expr( Y(colY2[i], Position( 1 )) )));
If( Is Missing(colY3[i]) != 1, Insert Into( vars, Expr( Y(colY3[i], Position( 1 )) )));
If( Is Missing(colY4[i]) != 1, Insert Into( vars, Expr( Y(colY4[i], Position( 1 )) )));
If( Is Missing(colGroupX[i]) != 1, Insert Into( vars, Expr( Group X(colGroupX[i]) )));
Re: 如何用占位符替换函数中的内容?您真的只是想让图形生成器动态化吗?是这样的吗?
Names default to here( 1 );
dt = open("$SAMPLE_DATA\Big Class.jmp");
some_func = function({dt, list_x, list_y, list_group_x={}},
{varExpr, i},
varExpr=Expr(Variables());
for(i=1, i<=nitems(list_x), i++,
insert into(varExpr, EvalExpr(X(Expr(list_x[i]))));
);
for(i=1, i<=nitems(list_y), i++,
insert into(varExpr, EvalExpr(Y(Expr(list_y[i]))));
);
for(i=1, i<=nitems(list_group_x), i++,
insert into(varExpr, EvalExpr(Group X(Expr(list_group_x[i]))));
);
Eval(Substitute(
Expr(
dt << Graph Builder(
Size( 696, 578 ),
DV_VARS
)
),
Expr(DV_VARS), nameexpr(varExpr)
))
);
some_func(dt, {:weight}, {:height, :height});
some_func(dt, {:weight, :weight}, {:height}, {:age});Re: 如何用占位符替换函数中的内容?嗨,文斯,感谢您的回答,这看起来很棒。 但是,您如何将绘图类型更改为等拟合线或条形图,因为上述方法仅适用于更平滑的绘图类型。
谢谢!
如何用占位符替换函数中的内容?第一块代码是多么希望它能工作,但事实并非如此。
如果我用它替换变量(vars),第二块代码就可以工作
有没有办法让第一个块工作? 如果我在这里做错了什么,请告知,谢谢。 JMP16
//Define variables for X, X1, X2, Y, Y1, Y2, and Group X
vars = {X(colX[i]), X(colX1[i], Position( 1 )), X(colX2[i], Position( 1 )),
Y(colY[i]), Y(colY1[i], Position( 1 )), Y(colY2[i], Position( 1 ))<BR /> };<BR /><BR /> //If colGroupX[i] is not missing, add Group X statement to the variables block
If( Is Missing(colGroupX[i]) != 1,
vars = Insert Into( vars, Group X( colGroupX[i] ) )
);<BR /><BR />// Graph builder code where vars is inserted into the variables <BR /><BR /> GB = Current Data Table() << Graph Builder(
Size( 1413, 999 ),
Variables( vars ), // vars is placed here
Elements(
Points( X( 1 ), X( 2 ), X( 3 ), Y( 1 ), Y( 2 ), Legend( 11 ) ),
Smoother( X( 1 ), X( 2 ), Y( 3 ), Y( 1 ), Y( 2 ), Legend( 14 ) )
),
SendToReport(
Dispatch(
{},
"Graph",
ScaleBox,
{Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )}
)
)
);
Variables(
X(colX[i]),
X(colX1[i], Position( 1 )),
X(colX2[i], Position( 1 )),
Y(colY[i]),
Y(colY1[i], Position( 1 )),
Y(colY2[i], Position( 1 ))
),
高级统计建模消费者和市场研究实验设计质量和工艺工程视窗