JMP 15 asume que un valor l en jsl es un nombre de columna, ¿es esto intencionado?JMP 15 asume que un valor l es un nombre de columna. Este no era el comportamiento en versiones anteriores. ¿Es esto intencionado o es un error?
Reproducir:
dt=new table("test");
dt<<NEW column=""></NEW>Esto da un error en JMP 15 pero no en JMP 14.
Modelado Estadístico AvanzadoInvestigación del Consumidor y del MercadoRe: JMP 15 asume que un valor l en jsl es un nombre de columna, ¿es esto intencionado?hola
Gracias por la grandiosa explicación. No había pensado en el primero : in :: para referirse al espacio de nombres global. Debo haberme equivocado con 14.3. Cuando lo intento ahora, también recibo la advertencia.
Tu escribiste " y por defecto, si solo se da un nombre como en la declaración de asignación".
Esto también es lo que esperaba, pero si una columna en una tabla de datos tiene el mismo nombre, JMP claramente asume que debe asignar el valor a la columna.
Parece que los nombres predeterminados aquí (1) corrigen ese comportamiento como señaló David. Siempre esperé con nombres predeterminados para el espacio de nombres aquí porque hace que la depuración sea más engorrosa. Pero de ahora en adelante, ¡siempre usaré esta opción desde el principio!
¡Espero que el equipo de JMP cambie ese comportamiento, porque puede crear algunos errores realmente difíciles de encontrar! ¡Especialmente, si un script realmente se refiere a columnas sin :'s !
Re: JMP 15 asume que un valor l en jsl es un nombre de columna, ¿es esto intencionado?@lwx228 Es incorrecto.Uno puede tener una variable y una columna con el mismo nombre.En realidad, es solo una cuestión de delimitar el nombre correctamente, para que JMP sepa de qué está hablando.
Tome el siguiente guión
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]);
En resultado de
a = 47;
a = 47;
:A[1] = 47;
dt:a[1] = 47;
Lo que está pasando aquí es que, en realidad, todas las variables y columnas tienen un nombre de 2 partes, separadas por dos puntos ":"
namespace:name
y por defecto, si solo se da un nombre como en la declaración de asignación
a = 13;
se supone que "a" es una variable.Si se colocan dos puntos delante del nombre de la variable,
:a[1] = a;
se supone que uno se refiere a una columna.En el ejemplo anterior, la primera fila de la columna denominada "a" recibirá el valor actual (13) de la variable denominada "a".
También se puede proporcionar el nombre completo de 2 partes para una variable y una columna.
Para las variables, el espacio de nombres predeterminado (primera parte del nombre) se llama ":".Así es, dos puntos, por lo que el nombre propio completo de la variable "a" es
::a
puede ver los resultados de usar el nombre completo en la instrucción Show() y sus resultados
El nombre propio completo de una columna en este pequeño script se compone de la variable de puntero asignada a la tabla de datos y el nombre real de la columna de la tabla de datos.
dt:a
La declaración Show () también ilustra el uso del nombre de 2 partes para una columna
Espero que esto no haya confundido a todos, sino que haya dado alguna idea
Re: JMP 15 asume que un valor l en jsl es un nombre de columna, ¿es esto intencionado?También ejecuté esto incorrectamente en la versión 14.3.

La única forma de evitar este error es recordar que el nombre de la variable no puede ser el mismo que el nombre de la columna.
Re: JMP 15 asume que un valor l en jsl es un nombre de columna, ¿es esto intencionado?Creo que el comportamiento depende de si global:a ya existe. Esto es molesto.
Re: JMP 15 asume que un valor l en jsl es un nombre de columna, ¿es esto intencionado?necesitas
names default to here(1);
es molesto, no sé si es intencional; Preferiría que las variables solo tuvieran un alcance como nombre de columna si tuvieran el prefijo de dos puntos (es decir, :a).
Re: JMP 15 asume que un valor l en jsl es un nombre de columna, ¿es esto intencionado?Interesante. Cuando lo ejecuto en 14.3.0 no me sale el error. No tengo versiones anteriores instaladas.
Re: JMP 15 asume que un valor l en jsl es un nombre de columna, ¿es esto intencionado?Cuando inicio nuevas sesiones en JMP 14.3 y JMP 15.1 y ejecuto su script, aparece el mismo error en ambas versiones
Cannot set value for the column 'a' because the row number (0) is not valid.