Il codice seguente funziona da uno script di meraviglia, ed è fondamentalmente 3 modi diversi per cambiare una formula di colonna.
Quando eseguo lo stesso codice da una barra degli strumenti JMP personalizzata, si bloccherà su :: dt: helloworld << set formula ("5");
perchè è questo? il comportamento non dovrebbe essere identico?
open("$SAMPLE_DATA/Amplitude 100.jmp");
dt = datatable("amplitude 100");
obj = new column("helloworld");
:helloworld << set formula("3");
dt :helloworld << set formula ("4");
::dt:helloworld << set formula ("5");
caption("Hello World");
Ci sono un paio di problemi. Il primo è che devi isolare il tuo codice dall'impatto di altri script, ecc. che sono in esecuzione.
Nomi predefiniti qui (1);
lo fa
In secondo luogo, stavi creando riferimenti incompleti e probabilmente non stavi vedendo errori mentre li stavi eseguendo, perché i loro valori erano nello spazio di memoria globale e non li avevi eliminati.
In terzo luogo, nel contesto del tuo codice, la dichiarazione
obj <SPAN class="token operator">=</SPAN> <SPAN class="token function">new column</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token string">"helloworld"</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
non avrebbe un riferimento, dal momento che OBJ non era stato definito nel tuo codice.
Il codice qui sotto funziona sul mio sistema
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Amplitude 100.jmp" );
dt << New Column( "helloworld", character, set each value( "5" ) );
Caption( "Hello World" );