大家好,
我想不断地将行添加到空数据表中,直到满足条件,但我不知道该怎么做。
在以下示例中,条件是向量中处于“稳态”的所有元素是否为 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 的乘积。 “稳态”列中的值是由 0 和 1 组成的向量,表示两个相邻 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 );
)