无法使用表格公式上的 jmp 脚本执行布尔逻辑你好,
我正在尝试运行一个简单的脚本,它将选择然后隐藏和排除距离中心径向距离大于 100 毫米的点。
为了简化调试,我将其分成两个脚本:第一个脚本生成一列,其径向距离 Radial = (x^2 + y^2)^(1/2) 公式;第二个脚本评估该公式,选择并隐藏 Radial > 100 的行。
不幸的是,这不起作用。出于某些非常奇怪的原因,评估只对这个公式起作用,直到达到某个值。Radial >(任何超过 30 的值)选择所有行。
我能看到两种解决方案:
1) 将值写入 Radial 列,而不是公式本身。(值被正确评估,但公式没有)。不知道该怎么做。
2) 理解并纠正问题,以便公式能够根据大于 30 的值进行评估。
脚本答案或交互式解释都可以接受。希望解决这个问题并从中学习。
谢谢!
戴夫
// script for creating the Radial column<BR />dt1 = Current Data Table ();
dt1 << New Column( "Radial", Formula ((X coordinate^2 + Y coordinate^2)^(1/2)));<BR /><BR />// script for evaluating the Radial formula<BR />dt =Current Data Table();<BR />dt << Clear Row States; <BR />dt << Select where(Radial < 100);<BR />dt << hide and exclude;<BR />
数据混合和清理回复:无法在表公式上使用 jmp 脚本执行布尔逻辑我在做一些猜测,但我相信 Radial 与 Radial 1 的问题是您没有正确确定列变量的范围。在你的声明中
dt << Select where((Radial 1> 100) | (Radial 1< 30) | (Pits Only > mf));
您应该在列名称前放置一个“:”:Radial 1 和:Pits Only。该脚本使用 Radial 1 的原因是没有名为 Radial 1 的内存变量,JMP 可能会在其中混淆。我假设在您的编码尝试中的某个时刻,您不小心创建了一个 Radial 的内存变量,因此当您指定
dt << Select where((Radial> 100) | (Radial< 30) | (Pits Only > mf));
JMP 将 Radial 的值替换为内存变量值,而不是列 Radial 的值。
回复:无法在表公式上使用 jmp 脚本执行布尔逻辑感谢您回复杰夫。
将脚本的最后一行粘贴到我的脚本中并没有解决问题。 但是,我能够通过将列的名称更改为“Radial 1”并在末尾添加一行 Eval Formula 来提供解决方案。 不知道为什么会这样。 数据表大约有1300行15列,每个数字的宽度为10到12。
以下两个脚本有效。 我将它们全部粘贴。 其他线评估凹坑深度和分布。
知道为什么修改有效吗? 我一天中的大部分时间都在做这件事。
脚本 1:创建“仅凹坑”和“径向 1”列
dt1 = Current Data Table ();
dt1 << Clear Row States;
dt1 << New Column( "Pits Only", Formula (If( :Name( "Height (mm)" ) <= 0, :Name( "Height (mm)"), 0 )) );
dt1 << New Column( "Radial 1", Formula ((X coordinate^2 + Y coordinate^2)^(1/2)));
dt1 << Eval Formula;
obj = dt1 << Distribution( Column( :Pits Only), Horizontal Layout( 1 ), Count Axis);
脚本 2:隐藏和排除 Pits Only > 10 或 Radial 1 > 100 或 Radial 1 < 30 的行
dt =Current Data Table();
dt << Clear Row States;
win = New Window( "Feature Depth" , <<MODAL> 100) | (Radial 1< 30) | (Pits Only > mf));
dt << hide and exclude;</MODAL>
回复:无法在表公式上使用 jmp 脚本执行布尔逻辑恐怕我无法在这里重现任何问题。 这是我用来测试的脚本。
dt1 = New Table( "Community 416651 Select Where",
Add Rows( 1000000 ),
New Column( "x coordinate",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Sequence( 5, 100, 5 ) ),
Set Selected
),
New Column( "y coordinate",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Sequence( 5, 100, 5, 20 ) ),
)
);
dt1 << New Column( "Radial",
Formula(
(X coordinate ^ 2 + Y coordinate ^ 2) ^ (1 / 2)
)
);
dt1 << Select where( Radial < 60 );
因此,我们需要更多关于您的脚本和数据表的详细信息。
你的数据表有多大? 你的脚本还在做什么?
回复:无法在表公式上使用 jmp 脚本执行布尔逻辑用于创建径向列的脚本
dt1 = Current Data Table ();
dt1 << Clear Row States;
dt1 << New Column( "Radial", Formula ((X coordinate^2 + Y coordinate^2)^(1/2)));
用于评估径向公式的脚本
dt =Current Data Table();
dt << Clear Row States;
dt << Select where(Radial < 100);
dt << hide and exclude;