大家好!
我试图在生成的数据表中选择一列并将该列转换为新的数据表。 以下是我的代码:
//part 1: generate a data table<BR />ret = New Table( title,
Add Rows (rowNum),
New Column( "P", Expression, "Continuous", Formula( pmatrix ) ),
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 ) ),
);
// part 2: select column X(n) and transform it into a new table
<STRONG>mat = Column(ret,"X(n)")[1];
show(mat);</STRONG>
For(i = 2, i <= N Rows(ret), i++,
V Concat To(mat,Column(ret,"X(n)")[i]);
);
table = As Table(mat);
names = Column(ret, "States") << get values;
For(i = 1, i <= N Col(table), i++,
Column(i) << Set Name( names[i] );
);
当我通过将结果表保存在第 1 部分中然后运行第 2 部分来分别测试这两个部分时,它可以工作。 但是我不想每次在运行第 2 部分之前都将表格保存在第 1 部分中,所以我将它们放在一起。 但是,合并的脚本不起作用。 在这种情况下,第 2 部分返回的表只有缺失值 (Empty())。
我添加“显示(垫);”在脚本中查看发生了什么,它显示“mat = Empty();”在日志中。 mat 的期望值应该是第 1 部分中数据表的 X(n) 列的每一行中的向量。
我不知道出了什么问题。 任何帮助,将不胜感激!
并感谢您的报告;列函数将在 JMP 15 内部执行 <Re: 引用时表为空
wait(n) 不是最好的解决方案;很难知道 n 是否足够大。 JMP 在后台计算表格公式。 确保他们已评估的最佳方法是
ret << RunFormulas;
建表后。 它将比等待它们更快地评估表格的公式。
对不起。 不知道为什么格式有问题。 脚本的第一行被注释...
ret = New Table(
Add Rows (rownum),
New Column( "P", Expression, "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 ) ),
);
我没有看到对变量“ret”的引用。后半段代码使用了ret,但前半段没有......