Send 在存取或評估 'Send' 時期望可編寫腳本的對象,午安,
嘗試“寫入”時出現此錯誤或類似錯誤。 “記錄”或“儲存”資料輸出
Send 在存取或評估 'Send' 時需要可編寫腳本的對象,G << /*###*/
'發送' , G << /*###*/Save( "/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>Send 在存取或評估 'Send' 時需要可編寫腳本的對象,G << /*###*/</EM><BR /><EM>// '發送' , G << /*###*/Save( "/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>自動化和腳本編寫</LINGO-LABEL><LINGO-LABEL>蘋果系統</LINGO-LABEL></LINGO-LABS>回覆:發送在存取或評估「發送」時需要可編寫腳本的對象,在這種情況下,你想拯救什麼?如果您希望將結果儲存到文字檔案中,則必須使用“儲存文字檔案”
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
因此,在這種情況下,您正在向矩陣發送錯誤的訊息。
回覆:發送在存取或評估「發送」時需要可編寫腳本的對象,謝謝。這很好用。
您想解決為什麼這個測試循環只打開“分析”視窗而沒有“Y”變數嗎?
這是僅針對 3 列資料的測試。我的目標是在 4,500 列上執行此程式並儲存每個分析的兩個 p 值。
// 開啟檔案
dt =開啟( “home/AND_Counts_alphaorder_SumNorm.jmp” );
// 定義回應列的範圍
起始列 = 31 ;
結束列 = 33 ;
// 循環回應列
for (col = startColumn, col <= endColumn, col++,
responseVar = Column (dt, col) <<取得名稱;
obj = dt <<擬合模型(
Y( 反應變數 ),
效果(:質量,::Accl_Temp_ordinal),
個性(標準最小平方法),
強調(最小報告),
跑步),
);
P = obj <<取得效果 PValues ;
儲存文字檔案( “~/Projects_AB/Ptest.csv” , Char (P));
// 這會開啟 3 個沒有「Y」的視窗
回覆:發送在存取或評估「發送」時需要可編寫腳本的對象,我認為如果您只在responseVar 周圍添加 Eval() (並將 Accl_Temp_ordinal 範圍從 :: 修復為 :)就足夠了。另外,如果您要處理那麼多列,請先用更小的數量進行測試,這樣您就可以使腳本以這樣的方式工作,這樣您就不會意外打開 4500 個擬合模型平台。下面應該是您的腳本版本,其中包含我建議的修復
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,但這取決於您希望獲得的最終結果。
回覆:發送在存取或評估「發送」時需要可編寫腳本的對象,雅爾莫,
謝謝,我嘗試一下,如果有效的話「接受作為解決方案」。
再次感謝。
道格
回覆:發送在存取或評估「發送」時需要可編寫腳本的對象,嗨,賈莫,
你的解決方案有效。
謝謝你!
但是,「儲存 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.
回覆:發送在存取或評估「發送」時需要可編寫腳本的對象,您必須將結果收集到循環內的列表/矩陣/其他一些資料結構中,然後處理將其保存在循環外。
您也可以先使用替換模式(預設模式)將檔案建立為空(或在循環的第一個循環中),然後使用替換模式將新資料附加到檔案Save Text File(path, text|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);

然後,您可以使用(或將其儲存為 JMP 表以確保不會丟失任何小數資料)將其儲存到 .csv 中
dt_result << Save("$TEMP/test.csv");
