JMP 15 geht davon aus, dass ein L-Wert in JSL ein Spaltenname ist – ist das beabsichtigt?JMP 15 geht davon aus, dass ein L-Wert ein Spaltenname ist. Dies war in früheren Versionen nicht der Fall. Ist das beabsichtigt oder handelt es sich um einen Bug?
Fortpflanzen:
dt=new table("test");
dt<<NEW column=""></NEW>Dies führt zu einem Fehler in JMP 15, jedoch nicht in JMP 14.
Erweiterte statistische ModellierungVerbraucher- und MarktforschungBetreff: JMP 15 geht davon aus, dass ein L-Wert in JSL ein Spaltenname ist – ist das beabsichtigt?Hallo Txnelson
Danke für die tolle Erklärung. Hatte nicht darüber nachgedacht, dass das erste : in :: auf den globalen Namespace verweist. Ich muss mich mit 14.3 geirrt haben. Wenn ich es jetzt versuche, erhalte ich auch die Warnung.
Sie schrieben " und standardmäßig, wenn nur ein Name angegeben wird, z. B. in der Zuweisungsanweisung.
Das habe ich auch erwartet, aber wenn eine Spalte in einer Datentabelle denselben Namen hat, geht JMP eindeutig davon aus, dass es der Spalte den Wert zuweisen sollte.
Die Standardeinstellung für Namen hier(1) behebt dieses Verhalten, wie David betonte. Ich habe immer mit der Standardeinstellung von Namen auf den Here-Namespace gewartet, da dies das Debuggen umständlicher macht. Aber von nun an werde ich diese Option immer von Anfang an nutzen!
Ich hoffe, dass das JMP-Team dieses Verhalten ändert, denn es kann zu wirklich schwer zu findenden Fehlern führen! Vor allem, wenn ein Skript tatsächlich auf Spalten ohne :'s verweist!
Betreff: JMP 15 geht davon aus, dass ein L-Wert in JSL ein Spaltenname ist – ist das beabsichtigt?@lwx228 ist falsch.Man kann eine Variable und eine Spalte mit demselben Namen haben.Es kommt eigentlich nur darauf an, den Namen richtig festzulegen, damit JMP weiß, wovon Sie sprechen
Nehmen Sie das folgende Skript
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]);
Es fuehrt zu
a = 47;
a = 47;
:A[1] = 47;
dt:a[1] = 47;
Was hier vor sich geht ist, dass eigentlich alle Variablen und Spalten einen zweiteiligen Namen haben, getrennt durch einen Doppelpunkt :
namespace:name
und standardmäßig, wenn nur ein Name angegeben wird, z. B. in der Zuweisungsanweisung
a = 13;
Es wird angenommen, dass „a“ eine Variable ist.Wenn vor dem Variablennamen ein Doppelpunkt steht,
:a[1] = a;
Es wird davon ausgegangen, dass man sich auf eine Spalte bezieht.Im obigen Beispiel wird der ersten Zeile in der Spalte mit dem Namen „a“ der aktuelle Wert (13) der Variablen mit dem Namen „a“ zugewiesen.
Man kann auch den vollständigen zweiteiligen Namen für eine Variable und eine Spalte angeben.
Für Variablen heißt der Standard-Namespace (erster Teil des Namens) „:“.Richtig, ein Doppelpunkt, also lautet der vollständige Eigenname für die Variable „a“.
::a
Sie können die Ergebnisse der Verwendung des vollständigen Namens in der Show()-Anweisung und deren Ergebnisse sehen
Der vollständige Eigenname für eine Spalte in diesem kleinen Skript besteht aus der der Datentabelle zugewiesenen Zeigervariablen und dem tatsächlichen Spaltennamen der Datentabelle
dt:a
Die Show()-Anweisung veranschaulicht auch die Verwendung zweiteiliger Namen für eine Spalte
Ich hoffe, dass dies nicht nur alle verwirrt, sondern vielmehr einen Einblick gegeben hat
Betreff: JMP 15 geht davon aus, dass ein L-Wert in JSL ein Spaltenname ist – ist das beabsichtigt?Ich habe dies auch in Version 14.3 falsch ausgeführt.

Die einzige Möglichkeit, diesen Fehler zu vermeiden, besteht darin, sich daran zu erinnern, dass der Variablenname nicht mit dem Spaltennamen identisch sein darf.
Betreff: JMP 15 geht davon aus, dass ein L-Wert in JSL ein Spaltenname ist – ist das beabsichtigt?Ich denke, das Verhalten hängt davon ab, ob global:a bereits existiert. Es ist nervig.
Betreff: JMP 15 geht davon aus, dass ein L-Wert in JSL ein Spaltenname ist – ist das beabsichtigt?du brauchst
names default to here(1);
es ist nervig – ich weiß nicht, ob es Absicht ist; Ich würde es vorziehen, wenn Variablen nur dann als Spaltennamen gelten würden, wenn ihnen ein Doppelpunkt vorangestellt wäre (z. B. :a).
Betreff: JMP 15 geht davon aus, dass ein L-Wert in JSL ein Spaltenname ist – ist das beabsichtigt?Interessant. Wenn ich es in 14.3.0 ausführe, wird der Fehler nicht angezeigt. Ich habe keine früheren Versionen installiert.
Betreff: JMP 15 geht davon aus, dass ein L-Wert in JSL ein Spaltenname ist – ist das beabsichtigt?Wenn ich neue Sitzungen in JMP 14.3 und JMP 15.1 starte und Ihr Skript ausführe, erhalte ich in beiden Versionen die gleiche Fehlermeldung
Cannot set value for the column 'a' because the row number (0) is not valid.