数据表:消息列存在(列名)?很酷的新功能
☑ 可以帮助很多用户!
☑ 删除“错误”
很高兴拥有
无人需要它
有专栏吗科名在我的数据表中?
这是社区中最常被问到的问题之一:
https://community.jmp.com/t5/Discussions/Check-column-name-if-existing/mp/312011/highlight/true#M56...
https://community.jmp.com/t5/Discussions/How-to-check-if-list-of-columns-exist-and-report-those-that...
https://community.jmp.com/t5/Discussions/If-column-exists/td-p/348
https://community.jmp.com/t5/Discussions/how-to-creat-new-column-if-same-name-column-does-not-exist/...
https://community.jmp.com/t5/Discussions/Create-a-new-Row-column-only-if-it-does-not-exist/td-p/3091...
https://community.jmp.com/t5/Discussions/Determining-if-a-column-exists/mp/6268#M6267
https://community.jmp.com/t5/Discussions/Validate-column-name-exists-before-graphing/mp/5088#M5087
所以,目前它的实施方式似乎还不够简单。
但它更有趣——并且存在很多危险。
不了解与 JSL 命名约定相关的障碍的用户很可能只是编写
Contains( dt << Get Column Names(String), "age" )
进入他的代码。 很容易 ...
但极其危险 - 请参阅:
https://community.jmp.com/t5/Discussions/check-if-column-exists/mp/572468
一些 jsl 脚本迷的讨论看起来很奇怪,这表明上面的语句当然适用于很多情况,但是:
一旦列名中包含空格、大写字母、特殊字符,就会失败。
为了防止用户使用这样危险的代码,最好“制度化”
- 即为用户提供一个简单的解决方案,自动解决所有陷阱。
我的希望:
应该可以查询数据表:
dt << contains column("colname")
这个函数可以解决所有的缺陷:
- 与完全匹配进行比较 - 或检查匹配作为名称(“colname”)<FONT face="arial,helvetica,sans-serif"> , 占空间</FONT>
- 区分或不区分小写/大写字母
- 处理特殊字符
好处:
- 社区中的问题较少
- 自动更好的代码。
- 减少挫败感。
自动化和脚本编写回复:数据表:消息列存在(列名)? - 状态更改为:是的,敬请期待!开发正在探索解决方案:”桌面上有一条消息可以直接询问,例如dt << 有列(“年龄”) ,如果您想要精确匹配或名称(不区分空格和大小写)匹配,则可能可以选择给出不同的答案”。
更改为是,敬请期待。
回复:数据表<<列存在(“名称”)? - 状态更改为:正在调查回复:数据表<<列存在(“名称”)?谢谢@hogi , 和@jthi用于发表评论。 将状态更改为调查。
回复:数据表<<列存在(“名称”)? - 状态更改为:已确认你好@hogi , 谢谢你的建议! 我们已收到您的请求并将予以考虑。
回复:数据表<<列存在(“名称”)?让 JMP 了解这些列名称是相同还是不同可能会更好? 这当然可能会破坏一些东西,所以可能不太容易实现。
这里有点令人困惑:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt:age << set name("a g e");
dt:age[1] = 999;
Show(Column(dt, "age")); //Column(dt, "age") = Column("a g e");
Show(dt:age[1]); //dt:age[1] = 999;
dt << New Column("age", Numeric, Ordinal);
Show(Column Name(2) == Column Name(6)); // Column Name(2) == Column Name(6) = 1; // Columns don't need unique names?
Show(Column(dt, "age")); //Column(dt, "age") = Column("age");
dt:age[1] = 9999;
Show(dt:age[1]); //dt:age[1] = 9999;
wait(1);
dt << Delete Column("age");
Show(Column(dt, "age")); //Column(dt, "age") = Column("a g e");
Show(dt:age[1]); //dt:age[1] = 999;
列是否遵循某些特定的命名? 请遵循名称必须以字母字符或下划线开头,但空格(有时)对于列确实很重要。 也许问题(如果有的话)只是列引用的工作原理?