使用参数设置公式你好,
我正在尝试在表的列中设置公式以及公式中的参数。 只需点击鼠标即可轻松完成。 但我需要写一个脚本。 下面是我写的命令:
Column( 数据表( "field_data" ), "直径预测公式" ) << 设置公式( Parameter({tuning = 1},eval(Name Expr(f11)) ));
我的公式存储在“f11”中。 公式会改变,所以我只能使用变量来引用它,而不能写出实际的公式。 当我运行此行时,公式会被正确计算,但是当我单击该列来检查公式时,它会显示“ eval(名称表达式(f11)) ”。 有什么办法可以把实际的公式放在这里吗? 请帮忙。 谢谢!!
回复:使用参数设置公式非常感谢伊恩!! 这有效! 
回复:使用参数设置公式Jim 展示了如何使用“Substitute()”构建公式表达式。 请注意,要查看所需表达式的外观,您始终可以手动构建公式列,并向结果列发送“getScript”或“getFormula”消息。 因此,您可以以吉姆的示例为基础来获取:
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
f11 = expr(:Height);
dt << New Column( "Column 6" );
Eval(
Substitute(
Expr(
:column 6 << set formula(tuning=2; :weight * __f11__ )
:column 6 << setFormula( Parameter( {b0 = initialValueTBD}, :weight * (__f11__ * b0) ) ),
),
Expr(initialValueTBD), 2,
Expr( __f11__ ), evalexpr(f11)
)
);
回复:使用参数设置公式谢谢特克斯尼尔森。 抱歉,我应该告诉您我的分析的下一步,因为这对我来说以我之前提到的方式定义参数很重要。
我正在使用带有公式(和参数)的列执行非线性回归。 现在,如果我按照您在代码中定义参数的方式定义参数,那么非线性回归将不会将“调整”视为必须优化的参数。 它将把它视为固定值。所以,它不会给我“调整”的优化值。 另一方面,如果我将“调整”定义为参数,那么非线性回归将为我提供参数“调整”的值,该值最小化平方和。
因此,请告诉我是否有任何方法可以在同一列中定义参数“调整”,以便非线性回归将其视为必须优化的参数而不是固定值。 谢谢!!
抱歉之前没说清楚。
回复:使用参数设置公式参数只是将内存变量值设置到公式中,只需将该代码放入公式中即可对其进行模拟。查看我对公式的新变体
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
f11 = expr(:Height * tuning);
dt << New Column( "Column 6" );
Eval(
Substitute(
Expr(
:column 6 << set formula(tuning=2; :weight * __f11__ )
),
Expr( __f11__ ), evalexpr(f11)
)
);回复:使用参数设置公式谢谢特克斯尼尔森,我理解你的代码。 但我的问题还有一件事。 我还需要在公式中设置一个参数。 让我借助您提供的示例代码进行解释。 您已成功分配第 6 列中的公式。 现在,在此之后,我还需要一个脚本来执行以下操作,可以通过单击鼠标来完成,如下所示:
1) 右键单击第 6 列。 转到“公式..”
2)从下拉列表中选择“参数”(靠近左下角)
3)点击“新参数”
4) 为参数指定名称和值
5)点击确定
请告诉我是否可以做到这一点。 谢谢!!
回复:使用参数设置公式您需要将评估强制纳入公式中,我发现最简单的方法是使用 Substitute()
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
f11 = ":Height";
dt << New Column( "Column 6" );
Eval(
Substitute(
Expr(
:column 6 << set formula( :weight * __f11__ )
),
Expr( __f11__ ), Parse( f11 )
)
);