データテーブル: メッセージ列が存在しますか(列名)?☐ クールな新機能
☑ 多くのユーザーを助けることができます!
☑「バグ」を削除します
☐ あったら嬉しい
☐ 誰も必要としていない
コラムはありますか列名私のデータテーブルには?
これは、コミュニティで最もよく聞かれる質問の 1 つです。
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")
この関数はすべての落とし穴を説明できます。
- 完全一致と比較する - または一致をチェックする名前として("列名")<FONT face="arial,helvetica,sans-serif"> 、スペースを考慮して</FONT>
- 小文字/大文字を区別するか区別しない
- 特殊文字を処理する
利益:
- コミュニティでの質問が減ります
- 自動的により良いコードになります。
- フラストレーションが減りました。
自動化とスクリプト作成Re: データテーブル: メッセージ列は存在しますか(列名)? - ステータスが「はい、お待ちください!」に変更されました。開発は解決策を模索中です:」テーブルの上に直接質問できるメッセージを用意しておきます。 dt << Column("age") があります、完全一致または名前 (スペースと大文字小文字を区別しない) 一致が必要な場合に、異なる回答を与えるオプションが含まれる可能性があります。」
「はい、お待ちください」に変更します。
Re: データテーブル << 列が存在します("名前")? - ステータスが「調査中」に変更されましたRe: データテーブル << 列が存在します("名前")?ありがとう@ほぎ、 そして@jthiコメント用に。 ステータスを調査中に変更します。
Re: データテーブル << 列が存在します("名前")? - ステータスが「確認済み」に変更されましたこんにちは@ほぎ、 提案ありがとう! お客様のご要望を承知し、検討させていただきます。
Re: データテーブル << 列が存在します("名前")?これらが同じ列名であるか異なる列名であるかを 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;
列は特定の名前に従っていますか? フォローしてください名前はアルファベットまたはアンダースコアで始める必要があります, しかし、空白は列にとって(場合によっては)重要です。 おそらく問題は (あるとすれば) 列参照がどのように機能するかということだけでしょうか。