Invia prevede un oggetto scriptabile nell'accesso o nella valutazione di "Invia",Buon pomeriggio,
Ottengo questo o un errore simile quando provo a "scrivere". Emissione dati "Registra" o "salva".
Send prevede un oggetto Scriptable nell'accesso o nella valutazione di 'Send', G << /*###*/
'Invia', G << /*###*/Salva( "/homedirectory/Drug_test.txt" ) /*###*/
Come esempio ho utilizzato l'esempio Fitmodel (sotto) per "Drug.jmp", che è un file di esempio JMP.
</CODE></P><P><CODE class=" language-jsl">dt = Open( "$SAMPLE_DATA/Drug.jmp" ); obj = dt << Fit Model( Y( :y ), Effects( :Drug, :x ), Personality( Standard Least Squares ), Emphasis( Minimal Report ), Run ); G = obj << Get Effect PValues; Show( G ); //values show in log G << Save( "/homedirectory/Drug_test.txt");// I get the error message:<EM>Send prevede un oggetto Scriptable nell'accesso o nella valutazione di 'Send', G << /*###*/</EM><BR /><EM>// 'Invia', G << /*###*/Salva( "/homedirectory/Drug_test.txt" ) /*###*/</EM> // also did not work G<<SAVETEXT></SAVETEXT>
<CODE class=" language-jsl">
What am I doing wrong?
DLC7JMP
<LINGO-LABS id="lingo-labs-769883" slang="en-US" mode="CREATE"><LINGO-LABEL>Automazione e scripting</LINGO-LABEL><LINGO-LABEL>Mac OS</LINGO-LABEL></LINGO-LABS>Ri: Invia prevede un oggetto scriptabile nell'accesso o nella valutazione di "Invia",Cosa stai cercando di salvare in questo caso? Se desideri salvare i risultati in un file di testo, devi utilizzare Salva file di testo
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Drug.jmp");
obj = dt << Fit Model(
Y(:y),
Effects(:Drug, :x),
Personality(Standard Least Squares),
Emphasis(Minimal Report),
Run
);
G = obj << Get Effect PValues;
Save Text File("$TEMP/drugtest.txt", Char(G));
Web("$TEMP/drugtest.txt"); // should open in default .txt application
Quindi in questo caso stai utilizzando l'invio di un messaggio errato a una matrice.
Ri: Invia prevede un oggetto scriptabile nell'accesso o nella valutazione di "Invia",Grazie. Funziona bene.
Ti piacerebbe spiegare perché questo ciclo di test apre solo finestre di "analisi" senza variabili "Y"?
Questo è un test per solo 3 colonne di dati. Il mio obiettivo è eseguirlo su 4.500 colonne e memorizzare i due valori p per ciascuna analisi.
// Apri il file
dt = Apri ( "home/AND_Counts_alphaorder_SumNorm.jmp" );
// Definisce l'intervallo delle colonne di risposta
colonnainizio = 31 ;
fineColonna = 33 ;
// Esegui il loop sulle colonne di risposta
for (col = colonnainizio, col <= colonnafine, col++,
rispostaVar = Colonna (dt, col) << Ottieni nome ;
oggetto = dt << Adatta modello (
Y(varrisposta),
Effetti( :mass, ::Accl_Temp_ordinal ),
Personalità (minimi quadrati standard),
Enfasi (rapporto minimo),
Correre),
);
P = obj << Ottieni effetto PValues ;
Salva file di testo ( "~/Projects_AB/Ptest.csv" , carattere (P));
// Questo apre 3 finestre senza "Y"
Ri: Invia prevede un oggetto scriptabile nell'accesso o nella valutazione di "Invia",Penso che potrebbe essere sufficiente aggiungere semplicemente Eval() attorno alla rispostaVar (e correggere l'ambito Accl_Temp_ordinal da :: a
. Inoltre, se stai lavorando con così tante colonne, provalo prima con una quantità molto più piccola in modo da poter far funzionare lo script in modo tale da non ritrovarti con 4500 piattaforme Fit Model aperte per sbaglio. Di seguito dovrebbe essere la versione del tuo script con le correzioni che ho suggerito
Names Default To Here(1);
dt = Open("home/AND_Counts_alphaorder_SumNorm.jmp");
// Define the range of response columns
startColumn = 31;
endColumn = 33;
// Loop over the response columns
For(col = startColumn, col <= endColumn, col++,
responseVar = Column(dt, col) << Get Name;
obj = dt << Fit Model(
Y(Eval(responseVar)),
Effects(:mass, :Accl_Temp_ordinal),
Personality(Standard Least Squares),
Emphasis(Minimal Report),
Run
);
);
P = obj << Get Effect PValues;
Save Text File("~/Projects_AB/Ptest.csv", Char(P));
Questo è un tipo di metodo un po' diverso ma forse può dare almeno qualche idea su come raccogliere i risultati e su come chiudere i report
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
colnames = {"height", "weight"}; // many method of getting these
// Loop over the response columns
colpvals = Associative Array();
For Each({colname}, colnames,
colname = "height"
fm = dt << Fit Model(
Y(Eval(colname)),
Effects(:age, :sex),
Personality(Standard Least Squares),
Emphasis(Minimal Report),
Run
);
pvals = fm << Get Effect PValues;
// list conversion seems to be necessary for for JSON conversion
// and it is easiest to do here
colpvals[colname] = As List(pvals);
fm << close window;
wait(0); // most likely unnecessary
);
Save Text File("$TEMP/test.json", As JSON Expr(colpvals));
// Web("$TEMP/test.json");
Potresti anche prendere in considerazione la raccolta dei risultati nella tabella dati JMP e la conversione in .csv, ma ciò dipende dal risultato finale che desideri ottenere.
Ri: Invia prevede un oggetto scriptabile nell'accesso o nella valutazione di "Invia",Jarmo,
Grazie, provo questo e "Accetta come soluzione" se funziona.
Grazie ancora.
Douglas
Ri: Invia prevede un oggetto scriptabile nell'accesso o nella valutazione di "Invia",Ciao Jarmo,
La tua soluzione ha funzionato.
Grazie!!
Tuttavia, il "Salva file Tex" come testo o CSV sovrascrive ogni voce lasciando solo l'ultimo valore p.
Pertanto ho combinato i tuoi due file per creare un file JSON, con note nella parte inferiore dello script per descrivere come importare in JMP.
Vedi sotto per t
Grazie ancora.
Douglas
Names Default To Here(1);
dt = Open("~home/mydatafile.jmp");
// Loop over the response columns
colpvals = Associative Array();
// Define the range of response columns
startColumn = 23;
endColumn = 42;
// Loop over the response columns
For(col = startColumn, col <= endColumn, col++,
responseVar = Column(dt, col) << Get Name;
fm = dt << Fit Model(
Y(Eval(responseVar)),
Effects(:mass, :Accl_Temp_ordinal),
Personality(Standard Least Squares),
Emphasis(Minimal Report),
Run
);
Pv = fm << Get Effect PValues;
// list conversion seems to be necessary for for JSON conversion
// and it is easiest to do here
colpvals[responseVar] = As List(Pv);
fm << close window;
wait(0); // most likely unnecessary
);
Save Text File("~home/Ptest4.json", As JSON Expr(colpvals));
// NOTE: open JSON file in JMP as "Data (Using Preview)" not best guess.
// top left choose "Stack" (upper right) and "Huge Guess" (under "Guess" pull down)
// File is columns of "responseVar" (data column names), rows are the two p-values
// Transposing in JMP may be desirable.
Ri: Invia prevede un oggetto scriptabile nell'accesso o nella valutazione di "Invia",Dovrai raccogliere i risultati in un elenco/matrice/qualche altra struttura di dati all'interno del ciclo e quindi gestire il salvataggio FUORI dal ciclo.
Potresti anche creare prima il file come vuoto (o nel primo ciclo del ciclo) con la modalità di sostituzione (modalità predefinita) e quindi aggiungere nuovi dati al file utilizzando la modalità di sostituzione Salva file di testo(percorso, testo|BLOB, ) .
Molto probabilmente vorrai aggiungere intestazioni al file .csv e al nome della colonna.
Names Default To Here(1);
filepath = "$TEMP/test.csv";
dt = Open("$SAMPLE_DATA/Big Class.jmp");
colnames = {"height", "weight"}; // many method of getting these
For Each({colname}, colnames,
fm = dt << Fit Model(
Y(Eval(colname)),
Effects(:age, :sex),
Personality(Standard Least Squares),
Emphasis(Minimal Report),
Run
);
pvals = fm << Get Effect PValues;
// list conversion seems to be necessary for for JSON conversion
// and it is easiest to do here
fm << close window;
If(!File Exists(filepath),
savemode = "replace";
,
savemode = "append"
);
Save Text File(filepath, Char(pvals) || "\!N", mode(savemode));
wait(0); // most likely unnecessary
);
// Web(filepath);
Se dovessi fare qualcosa del genere, molto probabilmente raccoglierei i risultati nella tabella JMP, la pulirei se necessario e la salverei nel formato desiderato
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
colnames = {"height", "weight"}; // many method of getting these
dt_result = Empty();
For Each({colname}, colnames,
fm = dt << Fit Model(
Y(Eval(colname)),
Effects(:age, :sex),
Personality(Standard Least Squares),
Emphasis(Minimal Report),
Run
);
dt_p = Report(fm)[Outline Box("Effect Tests"), Table Box(1)] << Make Combined Data Table(Invisible);
fm << close window;
dt_p << Delete Scripts(dt_p << Get Table Script Names);
If(Is Empty(dt_result),
dt_result = dt_p;
dt_result << Set Name("pvalues");
,
dt_result << Concatenate(Append to first table, dt_p);
Close(dt_p, no save);
);
);
dt_result << show window(1);

Puoi quindi salvarlo in un file .csv utilizzando (o salvarlo come tabella JMP per assicurarti di non perdere alcun dato in decimali)
dt_result << Save("$TEMP/test.csv");
