在变异性图表上循环 - 引用列表成员而不是显式使用其值的问题你好
我在变异性图表上循环分析不同的参数,每个参数由一列表示。 列名存储在列表中。 这是代码片段
tetser = {a list of 100 column names in string format};<BR />For( i = 1, i <= 100 , i++,
Variability Chart(
Y( tester[i]),
Model( "Crossed" ),
X( :Operators, :Parts ),
Analysis Type( "Choose best analysis (EMS REML or Bayesian)" ),
Variability Analysis(
tester[i], <U><EM><STRONG>/* PROBLEM HAPPENS ON THIS LINE*/</STRONG></EM></U>
MSA Metadata( tester[i] ( Lower Tolerance( LTU[i] ), Upper Tolerance( UTU[i] ), Tolerance Range( UTU[i]-LTU[i] ) ) ),
Gauge RR( 6 ),
"Gauge R&R Report"n( 1 )
)
);问题是:当我运行代码时出现此错误,这是因为我在 Variability Analysis(...) 函数中使用 tetser[i] 作为列名。 如果我将它更改为列名的字符串(而不是通过索引引用它),它就可以正常工作。 我在上面的代码中显示了我认为错误发生的那一行。 你能帮我解决这个问题或指导我找到帮助文件吗?

脚本回复:在变异性图表上循环 - 引用列表成员而不是显式使用其值的问题我认为图表是在 JMP 尝试评估 tester[i] 实际是什么之前绘制的,一旦评估完成,变异性图表平台就对启动它的脚本窗口一无所知。您可以通过告诉 JMP 在启动平台之前计算表达式来避免这种情况,如使用 Eval Insert、Eval Expr、Parse 和 Substitute 将一个表达式插入另一个表达式。
例如:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Variability Data/2 Factors Crossed.jmp" );
cols = dt << get column references;
cols = cols[1]
for each({c, i}, cols,
Eval( Eval Expr(
Variability Chart(
Y( Expr( c ) ),
Model( "Crossed" ),
X( :Operator, :"part#"n ),
Analysis Type( "Choose best analysis (EMS REML or Bayesian)" ),
Variability Analysis(
Expr( cols[i] ), /* PROBLEM HAPPENS ON THIS LINE*/
MSA Metadata( tester[i] ( Lower Tolerance( LTU[i] ), Upper Tolerance( UTU[i] ), Tolerance Range( UTU[i]-LTU[i] ) ) ),
Gauge RR( 6 ),
"Gauge R&R Report"n( 1 )
)
)
) )
);