Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von 'Send',Guten Tag,
Ich erhalte diesen oder einen ähnlichen Fehler beim Versuch, Daten zu „schreiben“. „Aufzeichnen“ oder „Speichern“ der Datenausgabe
Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von „Send“, G << /*###*/
'Senden' , G << /*###*/Speichern( "/homedirectory/Drug_test.txt" ) /*###*/
Als Beispiel habe ich das Fitmodel-Beispiel (unten) für „Drug.jmp“ verwendet, eine JMP-Beispieldatei.
</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 erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von „Send“, G << /*###*/</EM><BR /><EM>// 'Senden' , G << /*###*/Speichern( "/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>Automatisierung und Skripting</LINGO-LABEL><LINGO-LABEL>Mac OS</LINGO-LABEL></LINGO-LABS>Betreff: Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von 'Send'.Was möchten Sie in diesem Fall speichern? Wenn Sie die Ergebnisse in einer Textdatei speichern möchten, müssen Sie Textdatei speichern verwenden.
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
In diesem Fall senden Sie also eine falsche Nachricht an eine Matrix.
Betreff: Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von 'Send'.Vielen Dank. Das funktioniert einwandfrei.
Möchten Sie darauf eingehen, warum diese Testschleife nur „Analyse“-Fenster ohne „Y“-Variablen öffnet?
Dies ist ein Test für nur 3 Datenspalten. Mein Ziel ist es, ihn auf 4.500 Spalten anzuwenden und die beiden p-Werte für jede Analyse zu speichern.
// Datei öffnen
dt = Öffnen ( "home/AND_Counts_alphaorder_SumNorm.jmp" );
// Definieren Sie den Bereich der Antwortspalten
Startspalte = 31 ;
Endspalte = 33 ;
// Schleife über die Antwortspalten
für (col = startColumn, col <= endColumn, col++,
responseVar = Spalte (dt, col) << Name abrufen ;
obj = dt << Modell anpassen (
Y(AntwortVar),
Effekte( :Masse, ::Accl_Temp_ordinal ),
Persönlichkeit (Standard-Kleinste-Quadrate-Methode),
Betonung (Minimalbericht),
Laufen),
);
P = obj << Effekt-P-Werte abrufen ;
Textdatei speichern ( "~/Projects_AB/Ptest.csv" , Char (P));
// Dadurch werden 3 Fenster ohne „Y“ geöffnet.
Betreff: Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von 'Send'.Ich denke, es könnte ausreichen, wenn Sie einfach Eval() um Ihre responseVar hinzufügen (und den Accl_Temp_ordinal-Bereich von :: auf
festlegen. Wenn Sie mit so vielen Spalten arbeiten, testen Sie es außerdem zuerst mit einer viel kleineren Anzahl, damit das Skript so funktioniert, dass Sie nicht versehentlich 4500 Fit Model-Plattformen öffnen. Unten sollte die Version Ihres Skripts mit den von mir vorgeschlagenen Korrekturen aufgeführt sein
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));
Dies ist eine etwas andere Methode, aber vielleicht kann sie zumindest einige Ideen dazu liefern, wie man die Ergebnisse sammelt und wie man die Berichte schließt.
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");
Möglicherweise möchten Sie die Ergebnisse auch in einer JMP-Datentabelle sammeln und diese in eine CSV-Datei konvertieren. Dies hängt jedoch vom gewünschten Endergebnis ab.
Betreff: Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von 'Send'.Jarmo,
Danke, ich versuche es und akzeptiere die Lösung, wenn es funktioniert.
Danke noch einmal.
Doug
Betreff: Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von 'Send'.Hallo Jarmo,
Ihre Lösung hat funktioniert.
Danke schön!!
Allerdings überschrieb die Funktion „Tex-Datei als Text oder CSV speichern“ jeden Eintrag und ließ nur den letzten p-Wert übrig.
Aus diesem Grund habe ich Ihre beiden Dateien zu einer JSON-Datei kombiniert und am Ende des Skripts Hinweise zum Importieren in JMP hinzugefügt.
Siehe unten für t
Danke noch einmal.
Doug
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.
Betreff: Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von 'Send'.Sie müssen die Ergebnisse in einer Liste/Matrix/einer anderen Datenstruktur innerhalb der Schleife sammeln und das Speichern dann AUSSERHALB der Schleife handhaben.
Sie können die Datei auch zunächst leer erstellen (oder im ersten Zyklus der Schleife) und den Ersetzungsmodus (Standardmodus) verwenden, um dann im Ersetzungsmodus neue Daten an die Datei anzuhängen . Save Text File(path, text|BLOB, ) .
Höchstwahrscheinlich möchten Sie der CSV-Datei Kopfzeilen und den Spaltennamen hinzufügen.
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);
Wenn ich so etwas machen würde, würde ich höchstwahrscheinlich die Ergebnisse in einer JMP-Tabelle sammeln, sie bei Bedarf bereinigen und im gewünschten Format speichern
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);

Sie können dies dann in einer CSV-Datei speichern (oder als JMP-Tabelle speichern, um sicherzustellen, dass keine Daten in Dezimalstellen verloren gehen).
dt_result << Save("$TEMP/test.csv");
