JMP 15 は、jsl の左辺値が列名であると想定していますが、これは意図されたものですか?JMP 15 では、左辺値が列名であると想定されます。 これは以前のバージョンでは行われなかった動作です。 これは意図されたものですか、それともバグですか?
再現するには:
dt=new table("test");
dt<<NEW column=""></NEW>これにより、JMP 15 ではエラーが発生しますが、JMP 14 ではエラーが発生しません。
高度な統計モデリング消費者および市場調査Re: JMP 15 は、jsl の l-value が列名であると想定していますが、これは意図されたものですか?こんにちは、テキネルソン
素晴らしい説明をありがとうございます。 :: の最初の : がグローバル名前空間を参照することについては考えていませんでした。 14.3と間違えたのでしょう。 今試してみると警告も出ます。
あなたが書いた "デフォルトでは、代入ステートメントなどで名前のみが指定されている場合。
これも私が予想していたとおりですが、データ テーブル内の列に同じ名前がある場合、JMP は明らかにその列に値を割り当てる必要があると想定します。
デビッドが指摘したように、名前のデフォルトが here(1) であるようです。この動作は修正されています。 デバッグが面倒になるため、私は常に here 名前空間にデフォルトの名前を付けて待機していました。 でも、これからは最初からこのオプションを使うことにします!
JMP チームがその動作を変更してくれることを願っています。それは、非常に見つけにくいバグを生み出す可能性があるからです。 特に、スクリプトが実際に : のない列を参照している場合は !
Re: JMP 15 は、jsl の l-value が列名であると想定していますが、これは意図されたものですか?@lwx228間違っています。同じ名前の変数と列を持つことができます。実際には、名前のスコープを正しく設定するだけで、JMP はどれについて話しているのかを認識できるようになります。
次のスクリプトを実行します
dt=new table("Example", new column("A") );
dt << add rows(1);
a = 13;
:: a =47;
:a[1] = a;
show(a,::a,:a[1],dt:a[1]);
その結果、
a = 47;
a = 47;
:A[1] = 47;
dt:a[1] = 47;
ここで何が起こっているのかというと、実際にはすべての変数と列はコロン「:」で区切られた 2 つの部分からなる名前を持っています。
namespace:name
デフォルトでは、代入ステートメントなどで名前のみが指定されている場合
a = 13;
「a」は変数であると想定されます。変数名の前にコロンを付けると、
:a[1] = a;
列を参照していると想定されます。上の例では、「a」という名前の列の 1 行目に、「a」という名前の変数の現在の値 (13) が与えられます。
変数と列の 2 つの部分からなる完全な名前を指定することもできます。
変数の場合、デフォルトの名前空間 (名前の最初の部分) は「:」と呼ばれます。そうです、コロンです。つまり、変数「a」の完全な正式名は次のとおりです。
::a
Show() ステートメントでフルネームを使用した結果とその結果を確認できます。
この小さなスクリプト内の列の完全な固有名は、データ テーブルに割り当てられたポインター変数と実際のデータ テーブルの列名で構成されます。
dt:a
Show() ステートメントは、列の 2 つの部分からなる名前の使用法も示しています。
これが皆さんを混乱させるだけでなく、何らかの洞察を与えてくれることを願っています
Re: JMP 15 は、jsl の l-value が列名であると想定していますが、これは意図されたものですか?私もバージョン 14.3 でこれを誤って実行しました。

このエラーを回避する唯一の方法は、変数名を列名と同じにすることはできないことを覚えておくことです。
Re: JMP 15 は、jsl の l-value が列名であると想定していますが、これは意図されたものですか?動作は、global:aがすでに存在するかどうかに依存すると思います。 迷惑です。
Re: JMP 15 は、jsl の l-value が列名であると想定していますが、これは意図されたものですか?あなたが必要です
names default to here(1);
迷惑です - 意図的かどうかはわかりません。先頭にコロン (つまり :a) が付いている場合、変数のスコープが列名としてのみ設定されるとよいと思います。
Re: JMP 15 は、jsl の l-value が列名であると想定していますが、これは意図されたものですか?面白い。 14.3.0 で実行するとエラーは発生しません。 以前のバージョンがインストールされていません。
Re: JMP 15 は、jsl の l-value が列名であると想定していますが、これは意図されたものですか?JMP 14.3 と JMP 15.1 で新しいセッションを開始してスクリプトを実行すると、両方のバージョンで同じエラーが発生します。
Cannot set value for the column 'a' because the row number (0) is not valid.