Enviar espera objeto programable en el acceso o evaluación de 'Enviar',Buenas tardes,
Recibo este error o uno similar cuando intento "escribir". "Registrar" o "guardar" la salida de datos
Enviar espera objeto programable en el acceso o evaluación de 'Enviar', G << /*###*/
'Enviar', G << /*###*/Save( "/homedirectory/Drug_test.txt" ) /*###*/
Como ejemplo, utilicé el ejemplo de Fitmodel (a continuación) para "Drug.jmp", que es un archivo de ejemplo 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>Enviar espera objeto programable en el acceso o evaluación de 'Enviar', G << /*###*/</EM><BR /><EM>// 'Enviar' , G << /*###*/Guardar( "/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>Automatización y secuencias de comandos</LINGO-LABEL><LINGO-LABEL>Mac OS</LINGO-LABEL></LINGO-LABS>Re: Enviar espera objeto programable en el acceso o evaluación de 'Enviar',¿Qué estás intentando salvar en este caso? Si desea guardar los resultados en un archivo de texto, debe usar Guardar archivo de texto
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
Entonces, en este caso, estás utilizando el envío de un mensaje incorrecto a una matriz.
Re: Enviar espera objeto programable en el acceso o evaluación de 'Enviar',Gracias. Esto funciona bien.
¿Le importaría explicar por qué este bucle de prueba solo abre ventanas de "análisis" sin variables "Y"?
Esta es una prueba para solo 3 columnas de datos. Mi objetivo es ejecutar esto en 4500 columnas y almacenar los dos valores p para cada análisis.
// Abrir documento
dt = Abrir ( "inicio/AND_Counts_alphaorder_SumNorm.jmp" );
// Definir el rango de columnas de respuesta
columna inicial = 31 ;
columna final = 33 ;
// Recorre las columnas de respuesta
para (col = columnaInicio, col <= columnaFinal, columna++,
ResponseVar = Columna (dt, col) << Obtener nombre ;
obj = dt << Ajustar modelo (
Y( responseVar ),
Efectos( :masa, ::Accl_Temp_ordinal ),
Personalidad (mínimos cuadrados estándar),
Énfasis (Informe mínimo),
Correr),
);
P = obj << Obtener valores PV del efecto ;
Guardar archivo de texto ( "~/Projects_AB/Ptest.csv" , Char (P));
// Esto abre 3 ventanas sin "Y"
Re: Enviar espera objeto programable en el acceso o evaluación de 'Enviar',Creo que podría ser suficiente si simplemente agrega Eval() alrededor de su ResponseVar (y corrige el alcance Accl_Temp_ordinal de :: a
. Además, si está trabajando con tantas columnas, pruébelo primero con una cantidad mucho menor para que pueda hacer que el script funcione de tal manera que no termine con 4500 plataformas Fit Model abiertas por accidente. A continuación debería haber una versión de su script con las correcciones que sugerí
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));
Este es un tipo de método un poco diferente, pero tal vez pueda dar algunas ideas al menos sobre cómo recopilar los resultados y cómo cerrar los informes.
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");
También es posible que desee considerar recopilar los resultados en la tabla de datos JMP y convertirlos a .csv, pero eso depende del resultado final que desee obtener.
Re: Enviar espera objeto programable en el acceso o evaluación de 'Enviar',jarmo,
Gracias, intento esto y "Aceptar como solución" si funciona.
Gracias de nuevo.
doug
Re: Enviar espera objeto programable en el acceso o evaluación de 'Enviar',Hola jarmo,
Tu solución funcionó.
¡¡Gracias!!
Sin embargo, "Guardar archivo Tex" como texto o csv sobrescribió cada entrada dejando solo el último valor p.
Por lo tanto, combiné sus dos archivos para crear un archivo JSON, con notas en la parte inferior del script para describir cómo importar a JMP.
Vea a continuación para t
Gracias de nuevo.
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.
Re: Enviar espera objeto programable en el acceso o evaluación de 'Enviar',Tendrá que recopilar los resultados en una lista/matriz/alguna otra estructura de datos dentro del bucle y luego encargarse de guardarlos FUERA del bucle.
También puede crear primero el archivo vacío (o en el primer ciclo del bucle) con el modo de reemplazo (modo predeterminado) y luego agregar nuevos datos al archivo usando el modo de reemplazo Guardar archivo de texto (ruta, texto|BLOB, ) .
Lo más probable es que desee agregar encabezados al archivo .csv y el nombre de la columna.
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);
Si tuviera que hacer algo como esto, lo más probable es que recopile los resultados en la tabla JMP, los limpie si es necesario y los guarde en el formato deseado.
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);

Luego puede guardar esto en un .csv usando (o guardarlo como tabla JMP para asegurarse de no perder ningún dato en decimales)
dt_result << Save("$TEMP/test.csv");
