大家好,
我想不斷地向空數據表中添加行,直到滿足條件,但我不確定該怎麼做。
在下面的示例中,條件是“穩態”向量中的所有元素是否都是 1。
ret = New Table( title,
New Column( "P", Numeric, "Continuous", Formula( ptable << get as matrix ) ),
New Column( "X(n)",
Expression,
"None",
Formula( If( Row() == 1, init_state, Lag( :Name( "X(n)" ), 1 ) * :p</img> ) ),
Set Selected,
),
New Column( "steady state",
Expression,
"None",
Formula( :Name( "X(n)" ) - Lag( :Name( "X(n)" ) ) == zeros ),
),
New Column( "States", Character, Values( names ) ),
);
P 和 init_state 是從數據表中讀取的矩陣。 X(n) 中的行值是最後一行值與 P 的乘積。 “穩態”列中的值是由零和一組成的向量,表示兩個相鄰 X(n) 向量中的元素是否相等。 我想向這個數據表中添加行,直到“穩定狀態”的向量由所有的向量組成(即 X(n) 中的兩個相鄰向量完全相等)。
rownum = N Rows( ret );
cols = Column( ret, "steady state" );
ones = J( 1, vectorlength, 1 );
While((!vectorEqual(cols[rownum],ones)),
// add rows here, not sure how
rownum = N Rows( ret );
)
另一個問題是我添加命令“show(cols[rownum])”來檢查所選值是否正確但它顯示 Empty()... 是不是因為所有值都沒有首先添加到表中,所以我不能引用它們? 如果是這樣,我如何檢查條件?
我將不勝感激任何幫助!
沒關係。 我發現添加了“重新運行公式;”可以解決問題。 謝謝!
太感謝了!有用!
我仍然無法獲取列最後一行中的單元格值。 如前所述,它在日誌窗口中顯示“Empty()”。 我想問題是這些值是使用公式分配的,因此當我嘗試訪問它們時它們是 Empty() 。 我應該使用什麼腳本來獲取這些單元格的值?
關於添加行,我假設您需要做的就是添加
rownum = N Rows( ret );
cols = Column( ret, "steady state" );
ones = J( 1, vectorlength, 1 );
While((!vectorEqual(cols[rownum],ones)),
ret << add rows(1);
dt << Rerun Formulas;
rownum = N Rows( ret );
)