JMP 15 presuppone che un valore l in jsl sia un nome di colonna: è previsto?JMP 15 presuppone che un l-value sia un nome di colonna. Questo non era il comportamento nelle versioni precedenti. È voluto o è un bug?
Per riprodurre:
dt=new table("test");
dt<<NEW column=""></NEW>Questo dà un errore in JMP 15 ma non in JMP 14.
Modellazione statistica avanzataConsumatori e ricerche di mercatoRi: JMP 15 presuppone che un valore l in jsl sia un nome di colonna - è previsto?Ciao txnelson
Grazie per l'ottima spiegazione. Non avevo pensato al primo : in :: per fare riferimento allo spazio dei nomi globale. Devo essermi sbagliato con 14.3. Quando provo ora, ricevo anche l'avviso.
Hai scritto " e per impostazione predefinita, se viene dato solo un nome come nella dichiarazione di assegnazione".
Questo è anche quello che mi aspettavo, ma se una colonna in una tabella di dati ha lo stesso nome, JMP presuppone chiaramente che dovrebbe assegnare il valore alla colonna.
Sembra che i nomi predefiniti qui (1) risolvano quel comportamento come ha sottolineato David. Ho sempre aspettato con nomi predefiniti nello spazio dei nomi here perché rende il debug più ingombrante. Ma d'ora in poi, userò sempre questa opzione dall'inizio!
Spero che il team di JMP cambierà questo comportamento, perché può creare alcuni bug davvero difficili da trovare! In particolare, se uno script si riferisce effettivamente a colonne senza :'s !
Ri: JMP 15 presuppone che un valore l in jsl sia un nome di colonna - è previsto?@lwx228 non è corretto.Si può avere una variabile e una colonna con lo stesso nome.In realtà si tratta solo di definire correttamente l'ambito del nome, in modo che JMP sappia di cosa si sta parlando
Prendi il seguente script
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]);
Risulta in
a = 47;
a = 47;
:A[1] = 47;
dt:a[1] = 47;
Quello che sta succedendo qui è che in realtà tutte le variabili e le colonne hanno un nome in 2 parti, separate da due punti ":"
namespace:name
e per impostazione predefinita, se viene fornito solo un nome come nell'istruzione di assegnazione
a = 13;
si presume che "a" sia una variabile.Se i due punti sono posizionati davanti al nome della variabile,
:a[1] = a;
si presume che ci si riferisca a una colonna.Nell'esempio precedente, alla prima riga della colonna denominata "a" verrà assegnato il valore corrente (13) della variabile denominata "a".
Si può anche fornire il nome completo in 2 parti per una variabile e una colonna.
Per le variabili, lo spazio dei nomi predefinito (la prima parte del nome) si chiama ":".Esatto, i due punti, quindi il nome proprio completo della variabile "a" è
::a
puoi vedere i risultati dell'utilizzo del nome completo nell'istruzione Show () e i suoi risultati
Il nome corretto completo di una colonna in questo piccolo script è costituito dalla variabile puntatore assegnata alla tabella dati e dal nome effettivo della colonna della tabella dati
dt:a
L'istruzione Show() illustra anche l'utilizzo del nome in 2 parti per una colonna
Spero che questo non abbia solo confuso tutti, ma abbia invece dato un'idea
Ri: JMP 15 presuppone che un valore l in jsl sia un nome di colonna - è previsto?Ho anche eseguito questo in modo errato nella versione 14.3.

L'unico modo per evitare questo errore è ricordare che il nome della variabile non può essere uguale al nome della colonna.
Ri: JMP 15 presuppone che un valore l in jsl sia un nome di colonna - è previsto?Penso che il comportamento dipenda se global:a esiste già. È noioso.
Ri: JMP 15 presuppone che un valore l in jsl sia un nome di colonna - è previsto?hai bisogno
names default to here(1);
è fastidioso - non so se è intenzionale; Lo preferirei se le variabili fossero definite solo come nome di colonna se precedute da due punti (ad esempio: a).
Ri: JMP 15 presuppone che un valore l in jsl sia un nome di colonna - è previsto?Interessante. Quando lo eseguo in 14.3.0 non ottengo l'errore. Non ho versioni precedenti installate.
Ri: JMP 15 presuppone che un valore l in jsl sia un nome di colonna - è previsto?Quando avvio nuove sessioni in JMP 14.3 e JMP 15.1 ed eseguo lo script, ottengo lo stesso errore in entrambe le versioni
Cannot set value for the column 'a' because the row number (0) is not valid.