检查列是否存在?你好,
我想创建一个新专栏,在此之前:
询问数据表该列是否已存在。
是否有一种“最佳”方式可以与公司的其他同事共享代码?
检查列名称是否存在
如何检查列列表是否存在并使用弹出窗口报告缺少的列?
确定列是否存在
仅当列不存在时才创建新的 Row() 列
在绘图之前验证列名称是否存在
大规模定制回复:检查列是否存在?更多见解:
- 凉爽的!
不知道/注意到比较有效没有这细绳的选项获取列名
一样强大@tx尼尔森的尝试(列(dt,“年龄”))<BR />年龄 ~ 年龄
- 只需使用细绳作为获取列名称的参数,如果您想区分年龄和年龄
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Show(dt << Get Column Names(String));
Show( Contains( dt << Get Column Names(String), As Name( "Age") ) ); // -> nope
Show(dt << Get Column Names);
Show( Contains( dt << Get Column Names, As Name( "Age") ) ); // found !
Show(r=try(column(dt,"Age")<<GET name=""></GET>
回复:检查列是否存在?很好:)
为了防止用户忘记
As Name
在他们的代码中,如何向数据表对象添加一个函数来询问该列是否存在:
数据表:消息列是否存在(colname)?
随 JMP18 提供:

回复:检查列是否存在?我相信你应该使用作为名称()为此功能。它使这些检查变得容易,您不必担心间距/大写:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt:age << set name("a g e");
Show( Contains( dt << Get Column Names, As Name( "a ge" ) ) );
Show( Contains( dt << Get Column Names, As Name( "S eX" ) ) );
name to check = "N a ME";
Show( Contains( dt << Get Column Names, As Name( name to check ) ) )回复:检查列是否存在?事实上,没有需要去问名字,对吗?
诀窍在于
Try(column(dt,"age"), <EM>check for failure</EM>);
尝试获取该列 - 并检查它是否失败。
不仅是超短 - 而且还是一个绝佳的选择鲁棒性
并且 - 作为锦上添花 - 向专栏询问其名称:
r=try(column(dt,tn)<<GET name=""></GET>
一个很好的技巧,可以为现有和不存在的列获取明确定义的返回类型。 谢谢@tx尼尔森
回复:检查列是否存在?我发现的最可靠的方法是询问变量的名称,<< get name
它尊重空白等。
names default to here(1);
dt=current data table();
dt:age << set name("a g e");
tn="age";
r=try(column(dt,tn)<<GET name=""></GET>回复:检查列是否存在?我的最爱:吉姆的想法只是问该列的数据表并检查数据表是否有问题。
但即使这种方法也依赖于这样一个事实:询问时列名称的拼写与实际名称相符。
例如,如果您询问“age”,它不会找到“age e”。
但新专栏:年龄会切断之间的所有链接:年龄和现有的专栏:年龄
这可能会导致此类附带损害:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt:age << set name("a g e");
Show(dt: age [5]); // points to the existing column
Try(:is there a = column(dt,"age"), "answer: no");
new Column("age");
Show(dt: age[5]) // points to the new column回复:检查列是否存在?似乎这些解决方案中的每一个都有效。 最强大的可能是第二个链接,但它也有最多的代码行。