发送需要脚本对象来访问或评估‘发送’,下午好,
当我尝试“写入”时,我收到此错误或类似错误。“记录”或“保存”数据输出
发送期望脚本对象在访问或评估“发送”时,G << /*###*/
'发送',G << /*###*/保存(“/homedirectory/Drug_test.txt”)/*###*/
作为示例,我使用了“Drug.jmp”的 Fitmodel 示例(如下),这是一个 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>发送期望脚本对象在访问或评估“发送”时,G << /*###*/</EM><BR /><EM>//'发送',G< // also did not work G<<SAVETEXT></SAVETEXT></EM>
<CODE class=" language-jsl">
What am I doing wrong?
DLC7JMP
<LINGO-LABS id="lingo-labs-769883" slang="en-US" mode="CREATE"><LINGO-LABEL>自动化和脚本</LINGO-LABEL><LINGO-LABEL>苹果系统</LINGO-LABEL></LINGO-LABS>回复:Send 期望脚本对象在访问或评估“Send”时,在这种情况下,您想要保存什么?如果您希望将结果保存到文本文件中,则必须使用“保存文本文件”
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
因此在这种情况下您向矩阵发送了不正确的消息。
回复:Send 期望脚本对象在访问或评估“Send”时,谢谢。效果很好。
您是否想解释一下为什么这个测试循环只打开没有“Y”变量的“分析”窗口?
这是仅针对 3 列数据的测试。我的目标是对 4,500 列进行此测试,并存储每个分析的两个 p 值。
// 打开文件
dt =打开( “home/AND_Counts_alphaorder_SumNorm.jmp” );
// 定义响应列的范围
开始列 = 31 ;
结束列 = 33 ;
// 循环遍历响应列
对于(col = startColumn,col <= endColumn,col++,
responseVar = Column (dt, col) <<获取名称;
obj = dt <<拟合模型(
Y( 响应变量 ),
效果(:mass,::Accl_Temp_ordinal),
个性(标准最小二乘法),
重点(最少报告),
跑步),
(英文):
P = obj <<获取效果 PValues ;
保存文本文件( “~/Projects_AB/Ptest.csv” , Char (P));
// 这将打开 3 个不带“Y”的窗口
回复:Send 期望脚本对象在访问或评估“Send”时,我认为,如果您在 responseVar 周围添加 Eval()(并将 Accl_Temp_ordinal 范围从 :: 修复为
,这可能就足够了。此外,如果您要处理那么多列,请先用少得多的列进行测试,这样您就可以让脚本以这样一种方式工作,即您不会意外打开 4500 个 Fit Model 平台。下面应该是您的脚本版本,其中包含我建议的修复
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));
这是一种略有不同的方法,但也许它可以至少提供一些关于如何收集结果以及如何关闭报告的想法
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");
您可能还想考虑将结果收集到 JMP 数据表中并将其转换为 .csv,但这取决于您希望获得的最终结果。
回复:Send 期望脚本对象在访问或评估“Send”时,雅尔莫,
谢谢,我会尝试这个,如果有效的话就“接受为解决方案”。
再次感谢。
道格
回复:Send 期望脚本对象在访问或评估“Send”时,你好,Jarmo,
您的解决方案有效。
谢谢你!!
但是,“将 Tex 文件保存”为文本或 csv 会覆盖每个条目,仅留下最后一个 p 值。
因此,我将您的两个文件合并以创建 JSON 文件,并在脚本底部添加注释以描述如何导入 JMP。
请参阅下文
再次感谢。
道格
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.
回复:Send 期望脚本对象在访问或评估“Send”时,您必须将结果收集到循环内的列表/矩阵/其他数据结构中,然后处理循环外部的保存。
您还可以先使用替换模式(默认模式)将文件创建为空(或在循环的第一个循环中),然后使用替换模式将新数据附加到文件中保存文本文件(路径,文本| BLOB, ) 。
您很可能想要向 .csv 文件添加标题和列名。
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);
如果我要做这样的事情,我很可能会将结果收集到 JMP 表中,根据需要清理它并保存为所需的格式
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);

然后,您可以使用将其保存到 .csv 中(或将其保存为 JMP 表,以确保不会丢失任何小数数据)
dt_result << Save("$TEMP/test.csv");
