這是一個錯誤還是我遺漏了什麼?我有一個表(這裡簡化並稱為“TestBug.jsl”),用於生成一些隨機數,然後根據表變量進行計算,我們將其稱為“模擬器表”,因為每次我重新計算它時,這將是我想重複多次的模擬。
然後我有以下腳本來使用不同的輸入自動運行相同的模擬多次,並將結果表連接到“結果”表中。
要進行測試,只需使用 TestBug.jsl 作為目前資料表運行腳本,
Names Default To Here(1);
VarList={1,2,3,4};
New Namespace(
"MyNS"
);
MyNS:Simulator = Current Data Table();
MyNS:FinalT=MyNS:Simulator<
<SUBSET></SUBSET>
<P>基本上,腳本根據輸入列表和“結果表”中連接的結果數字(不包含公式,只包含數字)迭代並更改模擬器表中的表變量</P> <BR /> <P>因此,腳本最初所做的是創建一個與我的“模擬器”具有相同列的空結果表,然後迭代地更改“模擬器”中的表變數並將其連接到“結果”表</P> <BR /> <P>然而由於某種原因,每次我更改“模擬器”變數的值時,都會在“結果”表中的第二次迭代中創建一個新列,該列具有與變數相同的名稱,並以奇怪的模式用值填充它(見圖)</P> <BR /> <P>基本上,它將前一次迭代中變數的值添加到新連接行的活動列中,並將最後一次迭代的值添加到所有其他行中…</P> <P>這只是在幾次迭代中令人煩惱,但在許多迭代中會使整個過程變得非常緩慢/崩潰。</P> <P>如果我跳過“連接”或“設定表格變數”,則不會新增列。</P> <P>我不明白我做錯了什麼。</P>
<LINGO-LABS id="lingo-labs-906674" slang="en-US" mode="CREATE">
<LINGO-LABEL>自動化和腳本</LINGO-LABEL>
</LINGO-LABS>
回覆:這是一個錯誤還是我遺漏了什麼?這些是透過表變量添加到那裡的。例如,您可以在建立子集表後將其從子集中刪除,然後在每次連接後將其從子集中刪除。
看更多...
Names Default To Here(1);
VarList = {1, 2, 3, 4};
New Namespace(
"MyNS"
);
MyNS:Simulator = Datatable("TestBug");
MyNS:FinalT = MyNS:Simulator << subset(
Output Table("final table"),
Copy formula(0),
All rows,
Selected columns only(0)
);
MyNS:FinalT << Select All Rows;
MyNS:FinalT << Delete Rows;
Try(MyNS:FinalT << Delete Table Variable("myvar"));
advancementWin = New Window("Progress", TBsizes = Text Box(), );
For(is = 1, is <= Length(VarList), is++,
myVarVal = VarList[is];
TBsizes << set text(
"Simulating:" || Char(myVarVal) || "(" || Char(is) || "/" || Char(Length(VarList)) ||
")"
);
MyNS:Simulator << Suppress Formula Eval(1); //i need this as in the final version i make more changes and i want to avoid recalc of the random each change
MyNS:Simulator << set table variable("myvar", myVarVal);
MyNS:Simulator << Suppress Formula Eval(0);
MyNS:Simulator << Rerun Formulas();
MyNS:FinalT << Concatenate(MyNS:Simulator, Append to first table);
Try(MyNS:FinalT << Delete Table Variable("myvar"));
);
advancementWin << Closewindow();
回覆:這是一個錯誤還是我遺漏了什麼?謝謝。這解決了我的問題。
如果我理解正確的話
如果將兩個具有不同變數值的表連接起來,則會新增一個新列來“追蹤其在原始表中的值”
我明白為什麼有人想這樣做,但這是一種令人困惑的奇怪行為
你的技巧解決了這個問題,但為了完整起見,我不得不移動
Try(MyNS:FinalT << Delete Table Variable("myvar"));
連接之前