帮助列变量大家好,
我无法理解为什么以下代码失败:
// This code doesn't work
dt = Current Data Table();
selectedCol = dt << Get Selected Columns();
If( Col Mean( selectedCol[1] ) < Col Mean( selectedCol[2] ),
begin = selectedCol[1];
end = selectedCol[2];
,
begin = selectedCol[2];
end = selectedCol[1];
);
我希望将整个列重新分配给开始/结束变量,但它不会发生。我试过这个:
// This code still doesn't work
dt = Current Data Table();
selectedCol = dt << Get Selected Columns();
If( Col Mean( As Column( selectedCol[1] ) ) < Col Mean( As Column( selectedCol[2] ) ),
begin = As Column( selectedCol[1] );
end = As Column( selectedCol[2] );
,
begin = As Column( selectedCol[2] );
end = As Column( selectedCol[1] );
);
我可以得到一些帮助,概念和实践。 这看起来很简单,但我显然错过了一些重要的东西。
约翰
Re:帮助列变量谢谢,谢谢朱利安!
这非常有用!!!!
约翰
Re:帮助列变量你好 @john_madden ,
我在这里注意到两件事。首先,JSL从外部评估嵌套函数,这意味着您需要一个Eval()来引用列表中的列。其次,如果我正确理解您,您希望分配的所有列值开始和结束。如果是这样,您需要向列发送消息以返回这些值:<<获取值。以下应该有效(假设这是你的意图!)。
dt = Current Data Table();
selectedCol = dt << Get Selected Columns();
If( Col Mean( eval(selectedCol[1]) ) < Col Mean( eval(selectedCol[2]) ),
begin = selectedCol[1] << Get Values;
end = selectedCol[2] << Get Values;
,
begin = selectedCol[2] << Get Values;
end = selectedCol[1] << Get Values;
);
我希望这有帮助!
@julian
编辑:我可以看到有人如何看待我关于嵌套函数的观点,并说“等,Col均值(selectedCol [1])”不是嵌套函数,那为什么不起作用?事实上,订阅是一个功能,它只是方便地使用括号。你可以写:
Col Mean( Subscript(selectedCol,1) )
在这种情况下,函数的嵌套是显而易见的。当JMP尝试评估这段代码时会发生什么,首先评估Col Mean(),并且该函数需要一列来操作。它命中了Subscript()函数,不知道如何处理它。因此,通过在Eval()中包装Subscript(),我们告诉JMP在尝试评估Col Mean()之前首先处理下标(返回对列的引用)。
Col Mean( Eval( Subscript( selectedCol,1 ) ) )
我希望额外的解释有所帮助!