JSL の機能またはバグ?大きな文字列の部分文字列が数値を表しているかどうかを知ることに依存する関数があり、単に Num() コマンドの結果を使用しています。欠損値が返された場合は、部分文字列が数値を表していないと考えられます。 。
しかし、ユーザーは、Num() コマンドがリテラルの「R」が前に付く任意の数値を完全に受け入れてしまうという根本原因を持つバグを指摘しました。
これを機能またはバグとして認識している人はいますか?スクリプトインデックスを調べてみましたが、これに対する適切なクエリが思いつきません。
ありがとう!
Print( Num( "R404" ) );
Print( Num( "R123.456" ) );
Print( Num( "r99" ) );
/*
404
123.456
.
*/
自動化とスクリプト作成Re: JSL の機能またはバグ?@Audrey_Shull
文字としてインポートされた列で問題が発生しました。
数値以外は目で見ることはできませんでした。
しかし、数値にするとほとんどの値が消えてしまいます。 (JMP 16.2 Pro を使用)
しかし、JMP 17EA を使用すると、値が消えることなく、文字から数値にすぐに変換できました。
それで、そこではある程度の進歩がありました。
お役に立てば幸いです!
ベン
Re: JSL の機能またはバグ?皆さん、こんにちは。 この問題については、JMP 17 の期間内にいくつかの作業が行われたようです。 具体的には、有効な数値とみなされるものを制御できるように、追加の引数が Num() と Informat() に追加されました。 JMP 17 EA7 (またはそれ以降) ユーザーは今すぐこれを試すことができます。他のユーザーは、2022 年の秋に JMP 17 が利用可能になるまで待つ必要があります。 ご報告いただきありがとうございます! 私たちはこれらのフォーラムを監視しており、可能であればこのような問題を修正するよう努めています。
Re: JSL の機能またはバグ?私は JMP のドキュメントチームと開発チームにメモを送りました。 ありがとう!
Re: JSL の機能またはバグ?通貨は可能性が高いように思えますが、これが機能であるかどうかは実際にはわかりません。機能である場合は、いくつかの異なる場所でより適切なドキュメントが必要であることは確かです。すでにその数字が何かわかっている場合は、すべきそのデータに対して独自の検証関数を作成した方が良いように見えますが、これにより「1/1」のようなものが 1 月 1 日として解釈されるのを防ぐことができます。 もちろん、複数の言語を扱う場合、これはさらに困難になります。
num_validated = function({v}, {r=.},
if( //Make sure anything with odd characters is missing
is missing(regex(v,"^[0-9\.\,]+$")),
r = .,
//try to interpret everything else using 'num':
r = num( v );
);
r;
);
show(
num_validated("1"),
num_validated("1.0"),
num_validated("R1"),
num_validated("1,000")
);Re: JSL の機能またはバグ?注意すべきケースがたくさんあることは承知していますが、特に注意する必要があるのは標準文字だけであり、ここでの例は「R」だけです。他のプログラミング言語では、これは十分に文書化されているか、バグとみなされます (文書に明示的に記載されていない動作はすべてバグです) が、JMP はそのレベルの文書ではないため、おそらく単なる隠れた機能です。
Re: JSL の機能またはバグ?通貨、たぶん。 奇妙なケースも多いので注意が必要です...
num("$5")
5
num("2000年1月1日")
3029529600
num("5%")
0.05
asdate(num("1/1"))
2001 年 1 月 1 日